zoukankan      html  css  js  c++  java
  • java采用Apache FileUpload组件实现上传

    可见:FileItemSteam(servletFileUpload.getItemIterator(httpServletRequest))速度要快于FileItem(servletFileUpload.parseRequest(request))速度。且一般情况下,FileItemSteam不产生临时文件:

    package cn.itcast.servlet;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.Scanner;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.commons.fileupload.FileItemIterator;
    import org.apache.commons.fileupload.FileItemStream;
    import org.apache.commons.fileupload.FileUploadException;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    import org.apache.commons.io.FileUtils;
    /**
     * FileItemStream示例
     * @author <a href="mailto:wj@itcast.cn">王健</a>
     * @version 1.0 2012-3-15
     */
    public class Upload3Servlet extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    long start = System.currentTimeMillis();
    String path = getServletContext().getRealPath("/imgs");
    DiskFileItemFactory factory = new DiskFileItemFactory();
    factory.setSizeThreshold(1024 * 8);// 设置8k的缓存空间
    factory.setRepository(new File("d:/a"));
    ServletFileUpload upload = new ServletFileUpload(factory);
    upload.setHeaderEncoding("UTF-8");// 设置文件名处理中文编码
    try {
    FileItemIterator fii = upload.getItemIterator(request);// 使用遍历类
    while (fii.hasNext()) {
    FileItemStream fis = fii.next();
    if (fis.isFormField()) {//FileItemStream同样使用OpenStream获取普通表单的值
    InputStreamReader in = new InputStreamReader(fis.openStream(),"UTF-8");
    Scanner sc = new Scanner(in);
    StringBuffer sb = new StringBuffer();
    if(sc.hasNextLine()){
    sb.append(sc.nextLine());
    }
    System.err.println("Desc:"+sb.toString());
    } else {
    String fileName = fis.getName();
    fileName = fileName
    .substring(fileName.lastIndexOf("\") + 1);
    System.err.println("文件名为:" + fileName);
    InputStream in = fis.openStream();
    FileUtils.copyInputStreamToFile(in, new File(path+"/"+fileName));
    }
    }
    } catch (FileUploadException e) {
    e.printStackTrace();
    }
    long end = System.currentTimeMillis();
    System.err.println("用时:"+(end-start));
    }
    }
    

      

    转自:

    Apache FileUpload详细介绍

    http://www.open-open.com/lib/view/open1338108871261.html

  • 相关阅读:
    asp.net的decimal保留两位小数
    由于管理员设置的策略,该磁盘处于脱机状态-Win 2008 R2
    论大公司的通病和缺点
    sql server删除数据后空间无变化处理方法
    sql server压缩数据库和日志文件
    SQL千万级数据设计和优化
    SQL Server索引怎么用
    在电脑上测试手机网站
    asp.net实现GZip压缩和GZip解压
    WebService教程和分析
  • 原文地址:https://www.cnblogs.com/oisiv/p/3187929.html
Copyright © 2011-2022 走看看