随笔 - 45, 文章 - 2, 评论 - 11, 引用 - 0
数据加载中……

commons-FileUpload上传过程

1、

ServletFileUpload.isMultipartContent(request)

检测request中是否包含有multipart内容

2、如果有,生成DiskFileItemFactory工厂将进行相关的设置

         DiskFileItemFactory factory = new DiskFileItemFactory();
        // maximum size that will be stored in memory
        factory.setSizeThreshold(maxMemSize);
        // Location to save data that is larger than maxMemSize.
        factory.setRepository(new File("d:/"));

3、生成上传ServletFileUpload类,并将DiskFileFactory工厂传给它,并对ServletFileUpload进行配置

       // Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload(factory);
        // maximum file size to be uploaded.
        upload.setSizeMax(maxFileSize);

4、从request得到上传的文件列表

            // Parse the request to get file items.
            List fileItems = upload.parseRequest(request);

            // Process the uploaded file items
            Iterator i = fileItems.iterator();

5、处理文件:写入或者其他操作

while (i.hasNext()) {
                FileItem fi = (FileItem) i.next();
                if (!fi.isFormField()) {
                    // Get the uploaded file parameters
                    String fieldName = fi.getFieldName();
                    String fileName = fi.getName();
                    String contentType = fi.getContentType();
                    boolean isInMemory = fi.isInMemory();
                    long sizeInBytes = fi.getSize();
                    // Write the file
                    if (fileName.lastIndexOf("\\") >= 0) {
                        file = new File(
                                filePath
                                        + fileName.substring(fileName
                                                .lastIndexOf("\\")));
                    } else {
                        file = new File(
                                filePath
                                        + fileName.substring(fileName
                                                .lastIndexOf("\\") + 1));
                    }
                    fi.write(file);
                    out.println("Uploaded Filename: " + fileName + "<br>");
                }
            }

}

 

说明:

FileItem接口是对用户上传文件的封装

DiskFileItemFactory实现了FileItemFactory接口,主要方法有public FileItem createItem(String fieldName, String contentType, boolean isFormField, String fileName)

ServletFileUpload从FileUpload继承,而FileUpload又从FileUploadBase继承,功能:分析传入的request对象、得到文件列表FileItemIterator……

posted on 2011-03-23 13:01 jack zhai 阅读(1545) 评论(0)  编辑  收藏 所属分类: 轻量级框架学习java web


只有注册用户登录后才能发表评论。


网站导航: