南京北大青鸟
北大青鸟中博大学生专区 南京北大青鸟高中生专区 北大青鸟南京中专生专区 南京中博待业者专区 北大青鸟在职者专区
 
在线咨询
 
 
 
中心简介
校区简介
校区环境
周边景点
关于北大青鸟
特色优势
常见问题解答
网站地图
 
 
ACCP软件工程师课程
什么是ACCP
ACCP6.0课程介绍
各课程定位与介绍
各阶段课程
教学模式
ACCP6.0课程体系
ACCP6.0认证证书
 
 
  开班信息  
 
 
讲座试听
 
您的位置:首页 - 编程技巧 - 阅读信息
使用Common-FileUpload完成文件上传
作者:马志国  出处:中博IT教育  日期:2011-03-25
Common-FileUpload框架是Apache组织下jakarta-commons项目组下的一个小项目,该框架可以方便地将multipart/form-data类型请求中各种表单域解析出来,该项目还依赖于另一个项目

一、获得资源

Common-FileUpload框架是Apache组织下jakarta-commons项目组下的一个小项目,该框架可以方便地将multipart/form-data类型请求中各种表单域解析出来,该项目还依赖于另一个项目:Common-IO

登陆http://jakarta.apache.org/commons/fileupload,下载最近发布版

登陆http://jakarta.apache.org/commons/io站点,下载最近发布版

二、开发准备

创建Web Project

commons-fileupload-1.2.1.jarcommons-io-1.4.jar复制到/WEB-INF/lib路径下

三、编码模型

<%@ page contentType="text/html; charset=GBK"%>

<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>

<%@ page import="java.io.File"%>

<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>

<%@ page import="java.util.List"%>

<%@ page import="org.apache.commons.fileupload.FileItem"%>

<%@ page import="java.io.FileOutputStream"%>

<%@ page import="java.io.InputStream"%>

<%

    DiskFileItemFactory factory = new DiskFileItemFactory();

    //设置上传工厂的限制

    //设置上传文件的最大大小

    factory.setSizeThreshold(1024 * 1024 * 20);

    //设置保存文件的路径

    factory.setRepository(new File(request.getSession()

           .getServletContext().getRealPath("/")));

 

    //创建上传文件的ServletFileUpload对象

    ServletFileUpload upload = new ServletFileUpload(factory);

    //设置最大的上传限制

    upload.setSizeMax(1024 * 1024 * 20);

    //处理HTTP请求,items是所有的表单项(解析请求对象,获得所有请求的表单项数据)

    List items = upload.parseRequest(request);

    //遍历所有的表单项

    for (int i = 0; i < items.size(); i++) {

       FileItem item = (FileItem) items.get(i);

       //判断该表单项是否为一个普通表单项(File类型控件)

       if (item.isFormField()) {

           String name = item.getFieldName();//获得表单项的名字

           String value = item.getString("GBK");//GBK编码获得表单项输入数据

           out.println(name + " = " + value);

       } else {

           //代表该表单域是一个文件域

           //取得文件域的表单域名

           String fieldName = item.getFieldName();

           //获得上传的文件名

           String fileName = item.getName();

           fileName = request.getSession().getServletContext()

                  .getRealPath("/")

                  + System.currentTimeMillis()

                  + fileName.substring(fileName.lastIndexOf("."),

                         fileName.length());

           String contentType = item.getContentType();

           //以当前时间来生成上传文件的文件名

           FileOutputStream fout = new FileOutputStream(fileName);

           //如果上传文件域对应文件的内容已经在内存中

           if (item.isInMemory()) {

              fout.write(item.get());

           }

           //如果文件内容不完全在内存中

           else {

              //获取上传文件内容的输入流

              InputStream is = item.getInputStream();

              byte[] buffer = new byte[1024];

              int length = is.read(buffer);

              while (length == 1024) {

                  fout.write(buffer);

              }

              fout.write(buffer, 0, length);

              is.close();

              fout.close();

           }

       }

    }

%>

返 回
下一篇:文件上传的原理
相关新闻
学会使用时间
苹果iOS4.1预计8日发布 增高清视频上传功能
全力以赴地完成手边的任务
北大青鸟南京中博:C#文件粉碎机原理与实现
用最短的时间,完成更多最容易的事
 
中博教育客服在线
 
©南京北大青鸟 隐私政策


学费咨询
学历咨询
专业咨询
订座试听
就业咨询
课程咨询
测试认证
软件认证