commons-fileupload 上传文件

上一篇 / 下一篇  2012-08-17 16:12:00 / 个人分类:web

package cn.guang.servlet;

import java.io.*;
import java.util.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.*;
import javax.servlet.http.*;

import cn.guang.util.Config;
import cn.guang.media.Media;
import cn.guang.media.SqlMedia;
import cn.guang.util.DateFormat;

public class ServletUpload extends HttpServlet {
 private static final long serialVersionUID = 1L;
 Media media = null;
 SqlMedia sqlMedia = null;
 public void destroy() {
  super.destroy();
  
 }

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  doPost(request,response);
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  request.setCharacterEncoding("GBK");
  String action = request.getParameter("action");
  String realPath = this.getServletContext().getRealPath("/").replace("\\","/");
  String uploadPath=realPath + Config.configPath + action;    //定义上传文件的地址
  File folder = new File(uploadPath);
  if(!folder.exists())
   folder.mkdirs();
  String message=null;
  if(ServletFileUpload.isMultipartContent(request)){  //判断是否获取的是文件
   DiskFileItemFactory disk=new DiskFileItemFactory();
   disk.setSizeThreshold(20*1024);                 //设置内存可存字节数
   disk.setRepository(disk.getRepository());       //设置临时文件目录
   ServletFileUpload up=new ServletFileUpload(disk);
   long maxsize=100*1024*1024;
   List list=null;
   try{
    list=up.parseRequest(request);              //获取上传列表
   }
   catch(Exception e){
    e.printStackTrace();
   }
   Iterator i=list.iterator();                     //创建列表的迭代器
   while(i.hasNext()){
    FileItem fm=(FileItem)i.next();             //遍历列表
    if(!fm.isFormField()){
     String fname=fm.getName();              //获取文件名包含后缀
     String ext = "";//获取文件名后缀
     int startIndex = fname.lastIndexOf(".");
     if(startIndex!=-1){      //对文件名进行截取
      ext = fname.substring(startIndex+1);
     }else{
      ext=fname;
     }
     String ldName = fname.substring(0,startIndex);//没有后缀的文件名字
     String fileName = DateFormat.getRename();   //重命名后的新文件名
     String fileLastName = fileName+"."+ext;//重命名后的新文件名+后缀
     String sqlurl = action+"/"+fileLastName;

     if (!ext.equals("zip")) {
      message="只允许上传zip文件";
      break;
     }
     if(fm.getSize()>maxsize){
      message="文件太大了,不要超过100MB";
      break;
     }
     String fileSize=new Long(fm.getSize()).toString()+"B";
     if((fname==null)||(fname.equals(""))&&(fileSize.equals("0B"))){
      message="文件名不能为空,文件大小也不能为零!";
      break;
     }
     File saveFile=new File(uploadPath,fileLastName);
     try{
      fm.write(saveFile);                //向文件中写入数据
      message="文件上传成功!";
      media.setAd(fileName);
      media.setCustomer_id(action);
      media.setAd_size(fileSize);
      media.setAd_oldname(oldName);
      media.setAd_path(sqlurl);
      boolean isok = sqlMedia.uploadMedia(media);
      if (isok) {
       message="文件上传成功,保存数据成功!";
      }else {
       message="文件上传成功,但是保存数据库数据错误";
      }
     }
     catch(Exception e1){
      e1.printStackTrace();
     }
    }
   }
  }
  request.setAttribute("result",message);
  RequestDispatcher rd=request.getRequestDispatcher("/jsp/message.jsp");
  rd.forward(request, response);
 }
 
 public void init(ServletConfig config) throws ServletException {
  media = new Media();
  sqlMedia = new SqlMedia();
  super.init(config);
 }

}


TAG: 上传文件

 

评分:0

我来说两句

Open Toolbar