使用ServletFileUpload实现上传

来源:互联网 发布:真划算购物车源码 编辑:程序博客网 时间:2024/05/22 06:16

使用ServletFileUpload实现上传

 转载自http://blog.csdn.net/zsw2zkl/article/details/7426007

1.首先我们应该为上传的文件建一个存放的位置,一般位置分为临时和真是文件夹,那我们就需要获取这俩个文件夹的绝对路径,在servlet中我们可以这样做

[java] view plaincopyprint?
  1. ServletContext application = this.getServletContext(); 
  2. String tempDirectory = application.getRealPath(Constant.TEMP_DIRECTORY) +"/"
  3. String realDirectory = application.getRealPath(Constant.REAL_DIRECTORY) +"/"

然后建立文件工厂即仓库一个参数表示存放多大后flush,

[java] view plaincopyprint?
  1. FileItemFactory factory = new DiskFileItemFactory(Constant.SIZE_THRESHOLD,new File(tempDirectory)); 
  2. ServletFileUpload upload = new ServletFileUpload(factory); 
2.对上传的文件进行设定

[java] view plaincopyprint?
  1. upload.setSizeMax(500*1024*1024);//设置该次上传最大值为500M 
3,.解析请求正文,获取上传文件,不抛出异常则写入真是路径

[java] view plaincopyprint?
  1. List<FileItem> list = upload.parseRequest(request); 
  2.             Iterator<FileItem> iter = list.iterator(); 
  3.             while (iter.hasNext()) { 
  4.                 FileItem item = iter.next(); 
  5.                 //item.isFormField()用来判断当前对象是否是file表单域的数据  如果返回值是true说明不是 就是普通表单域 
  6.                 if(item.isFormField()){ 
  7.                     System.out.println( "普通表单域" +item.getFieldName()); 
  8.                     System.out.println(item.getString("utf-8")); 
  9.  
  10.                 }else
  11.                     //System.out.println("file表单域" + item.getFieldName()); 
  12.                     /*
  13.                      * 只有file表单域才将该对象中的内容写到真实文件夹中
  14.                      */ 
  15.                     String lastpath = item.getName();//获取上传文件的名称 
  16.                     lastpath = lastpath.substring(lastpath.lastIndexOf(".")); 
  17.                     String filename = UUID.randomUUID().toString().replace("-","") + lastpath; 
  18.                     item.write(new File(realDirectory+filename)); 





0 0
原创粉丝点击