打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Java Servlet – jQuery File Upload (multiple, drag&drop, progress…) | HMKCode
package com.hmkcode;
import java.io.IOException;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Part;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.hmkcode.vo.FileMeta;
public class MultipartRequestHandler {
    public static List<FileMeta> uploadByJavaServletAPI(HttpServletRequest request) throws IOException, ServletException{
        List<FileMeta> files = new LinkedList<FileMeta>();
        // 1. Get all parts
        Collection<Part> parts = request.getParts();
        // 2. Get paramter "twitter"
        String twitter = request.getParameter("twitter");
        // 3. Go over each part
        FileMeta temp = null;
        for(Part part:parts){  
            // 3.1 if part is multiparts "file"
            if(part.getContentType() != null){
                // 3.2 Create a new FileMeta object
                temp = new FileMeta();
                temp.setFileName(getFilename(part));
                temp.setFileSize(part.getSize()/1024 +" Kb");
                temp.setFileType(part.getContentType());
                temp.setContent(part.getInputStream());
                temp.setTwitter(twitter);
                // 3.3 Add created FileMeta object to List<FileMeta> files
                files.add(temp);
            }
        }
        return files;
    }
    public static List<FileMeta> uploadByApacheFileUpload(HttpServletRequest request) throws IOException, ServletException{
        List<FileMeta> files = new LinkedList<FileMeta>();
        // 1. Check request has multipart content
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        FileMeta temp = null;
        // 2. If yes (it has multipart "files")
        if(isMultipart){
            // 2.1 instantiate Apache FileUpload classes
            DiskFileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            // 2.2 Parse the request
            try {
                // 2.3 Get all uploaded FileItem
                List<FileItem> items = upload.parseRequest(request);
                String twitter = "";
                // 2.4 Go over each FileItem
                for(FileItem item:items){
                    // 2.5 if FileItem is not of type "file"
                    if (item.isFormField()) {
                        // 2.6 Search for "twitter" parameter
                        if(item.getFieldName().equals("twitter"))
                            twitter = item.getString();
                    } else {
                        // 2.7 Create FileMeta object
                        temp = new FileMeta();
                        temp.setFileName(item.getName());
                        temp.setContent(item.getInputStream());
                        temp.setFileType(item.getContentType());
                        temp.setFileSize(item.getSize()/1024+ "Kb");
                        // 2.7 Add created FileMeta object to List<FileMeta> files
                        files.add(temp);
                    }
                }
                // 2.8 Set "twitter" parameter
                for(FileMeta fm:files){
                    fm.setTwitter(twitter);
                }
            } catch (FileUploadException e) {
                e.printStackTrace();
            }
        }
        return files;
    }
    // this method is used to get file name out of request headers
    //
    private static String getFilename(Part part) {
        for (String cd : part.getHeader("content-disposition").split(";")) {
            if (cd.trim().startsWith("filename")) {
                String filename = cd.substring(cd.indexOf('=') + 1).trim().replace("\"", "");
                return filename.substring(filename.lastIndexOf('/') + 1).substring(filename.lastIndexOf('\\') + 1); // MSIE fix.
            }
        }
        return null;
    }
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
servlet 和JSP的上传下载
Jakarta-Common-FileUpload使用简单入门
文件上传表单 上传文件的细节 文件上传下载和数据库结合
使用commons-fileupload例子--孤独的日子
Jbpm流程图显示
CSDN技术中心 有关FileUpload组件的使用和调试的经验
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服