Common FileUpload组件的使用!(源码)

今天搞了一下文件上传功能组件Common FileUpload。

需要两个Jar包分别是commons-io-1.4.jar,commons-fileupload-1.2.1.jar。点击下载

只需要写一个上传类UploadServlet.java,还需要两个Jsp界面,分别负责上传文件和输出上传是否成功。

还需要在根目录下新建一个文件夹uploads,用于保存上传后文件。

下面是上传Servlet类源码:

  1. packagecom.sy.web;
  2. importjava.io.*;
  3. importjava.util.*;
  4. importjavax.servlet.*;
  5. importjavax.servlet.http.*;
  6. importorg.apache.commons.fileupload.*;
  7. importorg.apache.commons.fileupload.disk.DiskFileItemFactory;
  8. importorg.apache.commons.fileupload.servlet.ServletFileUpload;
  9. publicclassUploadServletextendsHttpServlet{
  10. privatestaticfinallongserialVersionUID=-2201219701121037194L;
  11. privateStringsavePath;
  12. privateServletContextsc;
  13. publicvoidinit(ServletConfigconfig){
  14. savePath=config.getInitParameter("savePath");
  15. sc=config.getServletContext();
  16. }
  17. publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
  18. throwsServletException,IOException{
  19. doPost(request,response);
  20. }
  21. publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
  22. throwsServletException,IOException{
  23. request.setCharacterEncoding("UTF-8");
  24. DiskFileItemFactoryfactory=newDiskFileItemFactory();
  25. ServletFileUploadupload=newServletFileUpload(factory);
  26. try{
  27. Listitems=upload.parseRequest(request);//上传文件解析
  28. Iteratoritr=items.iterator();//枚举方法
  29. while(itr.hasNext()){
  30. FileItemitem=(FileItem)itr.next();
  31. if(item.isFormField()){//判断是文件还是文本信息
  32. System.out.println("表单参数名:"+item.getFieldName()
  33. +",表单参数值:"+item.getString("UTF-8"));
  34. }else{
  35. if(item.getName()!=null&&!item.getName().equals("")){//判断是否选择了文件
  36. System.out.println("上传文件的大小:"+item.getSize());
  37. System.out.println("上传文件的类型:"+item.getContentType());
  38. //item.getName()返回上传文件在客户端的完整路径名称
  39. System.out.println("上传文件的名称:"+item.getName());
  40. //此时文件暂存在服务器的内存当中
  41. FiletempFile=newFile(item.getName());//构造临时对象
  42. Filefile=newFile(sc.getRealPath("/")+savePath,
  43. tempFile.getName());
  44. //获取根目录对应的真实物理路径
  45. item.write(file);//保存文件在服务器的物理磁盘中
  46. request.setAttribute("upload.message","上传文件成功!");//返回上传结果
  47. }else{
  48. request.setAttribute("upload.message","没有选择上传文件!");
  49. }
  50. }
  51. }
  52. }catch(Exceptione){
  53. e.printStackTrace();
  54. request.setAttribute("upload.message","上传文件失败!");
  55. }
  56. request.getRequestDispatcher("/uploadResult.jsp").forward(request,
  57. response);
  58. }
  59. }

你可能感兴趣的:(apache,jsp,Web,servlet)