当前位置: 代码迷 >> Web前端 >> FileUpload容易使用
  详细解决方案

FileUpload容易使用

热度:240   发布时间:2012-11-06 14:07:00.0
FileUpload简单使用

FileUpload文件上传组件:


官方下载: http://commons.apache.org/fileupload/ ?

?

官方使用说明: http://commons.apache.org/fileupload/using.html

?


以下是个人的简单使用:


判断是否有上传请求:

?

if (ServletFileUpload.isMultipartContent(request))

?

开始时的一般设置:

?

    //建立文件工厂
    DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
    //建立文件处理
    ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
    //设置上传文件的最大容量
    servletFileUpload.setFileSizeMax (maxSize);
    //设置最大内存容量 
    diskFileItemFactory.setSizeThreshold (maxSize);
?

?

处理文件:

?

    //获取文件项List
    List items = servletFileUpload.parseRequest(request);
    //建立文件项的迭代器
    Iterator iter = items.iterator();
    //循环文件项
    while( iter.hasNext()){
            FileItem item = (FileItem) iter.next() ;
             //判断是否为表单域,false则是file文件
             if (!item.isFormField()) {
             //取文件的各个属性,详细的请看官方说明
             String fileName = item.getName();
              }
       }
?

?

以上的List items = servletFileUpload.parseRequest(request); 很多人都说取不了,我也遇过

如果只是要文件输入流即可,可试一下以下方法:

?

FileItemStream fileItemStream = null; 
FileItemIterator fileItemIterator; 
try { 
      //取文件项迭代器 
      fileItemIterator = servletFileUpload.getItemIterator(request); 
      //取下一个文件项的文件流,返回值是FileItemStream 
} catch (FileUploadException ex) { 
      Logger.getLogger(TemplateUploadServlet.class.getName()).log(Level.SEVERE, null, ex); 
} 
//用文件流判定是否为文件 
if (!fileItemStream.isFormField()){
      //取个属性 
      String fileName = fileItemStream.getName();  
      //取文件输入流 
      InputStream uploadStream = fileItemStream.openStream();    
}
?

?

还有很多的基本请看官方使用说明。

  相关解决方案