13544870125 发表于 2017-1-9 06:22:54

利用apache的fileupload组件实现文件的上传

利用apache的fileupload组件实现文件的上传

 
<!-- 正文开始 -->  package org.xxm;
  import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
  import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
  import dareway.org.apache.commons.fileupload.FileItem;
import dareway.org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;
import dareway.org.apache.commons.fileupload.disk.DiskFileItemFactory;
import dareway.org.apache.commons.fileupload.servlet.ServletFileUpload;
import dareway.org.apache.commons.fileupload.util.Streams;
  
public class UploadFileServlet extends HttpServlet {
 public void doGet(HttpServletRequest req,
   HttpServletResponse res) {
  return;
 }
 
 public void doPost(HttpServletRequest req,
   HttpServletResponse res) throws IOException {
  
  if(ServletFileUpload.isMultipartContent(req)) {
   req.setCharacterEncoding("utf-8");
   DiskFileItemFactory factory = new DiskFileItemFactory();
   
   factory.setRepository(new File("../webapps/fileupload/tmp"));
   //内存最大占用
   factory.setSizeThreshold(1024000);
   ServletFileUpload sfu = new ServletFileUpload(factory);
   //单个文件最大值byte
   sfu.setFileSizeMax(102400000);
   //所有上传文件的总和最大值byte
   sfu.setSizeMax(204800000);
   List items = null;
   try {
    items = sfu.parseRequest(req);
   } catch (SizeLimitExceededException e) {
    System.out.println("size limit exception!");
   } catch(Exception e) {
    e.printStackTrace();
   }
   
   Iterator iter = items==null?null:items.iterator();
   while(iter != null && iter.hasNext()) {
    FileItem item = (FileItem)iter.next();
    //简单的表单域
    if(item.isFormField()) {
     System.out.print("form field:");
     System.out.print(item.getFieldName() + "  ");
     System.out.print(item.getString());
    }
    //文件域
    else if(!item.isFormField()) {
     System.out.println("client name:" + item.getName());
     String fileName = item.getName().substring(item.getName().lastIndexOf("\"));
     BufferedInputStream in = new BufferedInputStream(item.getInputStream());
     //文件存储在工程的upload目录下,这个目录也得存在
     BufferedOutputStream out = new BufferedOutputStream(
       new FileOutputStream(new File("../webapps/fileupload/upload/" + fileName)));
     Streams.copy(in, out, true);
    }
   }
  } else {
   System.out.println("enctype error!");
  }
 }
}
页: [1]
查看完整版本: 利用apache的fileupload组件实现文件的上传