Java上传文件common-fileupload

        jsp文件上传大多采用开源项目Commons FileUpload来简化处理,可以在http://jakarta.apache.org/commons/fileupload/下载,这个包需要Commons IO的支持,可以在http://jakarta.apache.org/commons/io/下载。Commons FileUpload提供三种文件上传处理方式,DiskFileUpload、ServletFileUpload和 PortletFileUpload三种方式,其中DiskFileUpload已经在javadoc下已经被标记为过期的方法,建议用 ServletFileUpload代替,而PortletFileUpload需要配合portlet-api来使用,所以这里我们只介绍 ServletFileUpload,并且这个也是最常用的。使用如下:

   test.jsp:     

<%@ page language="java" import="java.util.*" contentType="text/html;charset=gbk" pageEncoding="gbk"%>
<html>
   <body>
     <form action="/MultipartTestServlet" enctype="multipart/form-data" method="post">
      <input type="text" name="username" /><br />
      <input type="file" name="myfile" /><br/>
      <input type="file" name="myfile" /><br/>
      <input type="submit" />
     </form>
   </body>
</html>


MultipartTestServlet.java:

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.RequestContext;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.servlet.ServletRequestContext;

public class MultipartTestServlet extends HttpServlet {

  public MultipartTestServlet() {
      super();
  }

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

      request.setCharacterEncoding("utf-8");
      RequestContext requestContext = new ServletRequestContext(request);
   
      if(FileUpload.isMultipartContent(requestContext)){
    
            DiskFileItemFactory factory = new DiskFileItemFactory();
            factory.setRepository(new File("c:/tmp/"));
            ServletFileUpload upload = new ServletFileUpload(factory);
            //upload.setHeaderEncoding("utf-8");
            upload.setSizeMax(2000000);
            List items = new ArrayList();
            try {
               items = upload.parseRequest(request);
            } catch (FileUploadException e1) {
               System.out.println("文件上传发生错误" + e1.getMessage());
            }

            Iterator it = items.iterator();
            while(it.hasNext()){
                FileItem fileItem = (FileItem) it.next();
                if(fileItem.isFormField()){      
                       System.out.println(fileItem.getFieldName() + "   " + fileItem.getName() + "   " + new String
                                           (fileItem.getString().getBytes("iso8859-1"), "gbk"));
                }else{
                       System.out.println(fileItem.getFieldName() + "   " + 
                               fileItem.getName() + "   " + fileItem.isInMemory() + "    " + 
                               fileItem.getContentType() + "   " + fileItem.getSize());
      
                       if(fileItem.getName()!=null && fileItem.getSize()!=0){
                               File fullFile = new File(fileItem.getName());
                               File newFile = new File("c:/temp/" + fullFile.getName());
                               try {
                                   fileItem.write(newFile);
                               } catch (Exception e) {
                                      e.printStackTrace();
                               }
                       }else{
                               System.out.println("文件没有选择 或 文件内容为空");
                       }
                }
      
            }
       }
   }

}


 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值