spring 上传多图片

来源:互联网 发布:艾利丹尼森 知乎 编辑:程序博客网 时间:2024/06/02 03:55

前端部分

//可使用FormData 携带file进行上传var formdata = new FormData();var imageInfos = [];//上传多$.each($(".myupload"),function(n,item){    var file = $(uploadFile).get(0).files[0];    //只上传图片    if (file.type.match("image.*")) {        formdata.append("file"+n, file);        //携带 图片的一些额外信息        var imageInfo = {"sort":n, "link":link, "product":product};        imageInfos.push(imageInfo);    }   });//使用JSON.stringify 转成JSON字符串,否则后端接收的是[object Object]formdata.append("imageInfos", JSON.stringify(imageInfos));

然后使用ajax 请求,不废话了!

后端部分

Controller层

@ResponseBody    @RequestMapping(value="operdesigncarousel.htm", method=RequestMethod.POST)    public Map<String, Object> uploadDemo(HttpServletRequest request,HttpServletResponse response) {        Map<String, Object> paraMap = requestUtil.getParaMap(request);        Map<String, Object> resultMap = new HashMap<String, Object>();        Map<String, Object> saveFile = FileUploadUtil                    .multipartUpload(request, "\\ecommerce\\design");        int ret = Integer.parseInt(saveFile.get("ret").toString());        if(ret > 0) {            return service.add(paraMap);        }                           resultMap.put("ret", -1);        resultMap.put("desc", saveFile.get("desc"));        return resultMap;    }

Tomcat 配置虚拟路径
在D:\apache-tomcat-8.5.5\conf\Catalina\localhost新建一个 名和path相同的xml文件如:这里写图片描述
这里写图片描述

一个基于spring 的 fileupload 工具

/**     * TODO<br/>     * @param request     * @param savePath 例如:根目录(D:\apache-tomcat-8.5.5\webapps\erp-crm) + 保存目录(\crm\mall\design) + 文件名   (demo.png)      * @param isSaveInProject true 保存在webapp 项目下, 重新部署会清空, false 根目录为对应tomcat目录     * @param isNewFileName true 生成新文件名   格式为  yyyyMMddHHmmss(0++ 防止多上传同名).suffix     * @return Map 包含 ret -1 失败; desc 描述; pathList 文件url列表     */    public static Map<String, Object> multipartUpload(HttpServletRequest request,             String savePath, boolean isSaveInProject, boolean isNewFileName) {        MultipartHttpServletRequest mulRequest = (MultipartHttpServletRequest) request;        Map<String, Object> result = new HashMap<String, Object>();        List<String> pathList = new ArrayList();        StringBuilder builder = new StringBuilder();        Map<String, MultipartFile> fileMap = mulRequest.getFileMap();        //null 判断        if(fileMap == null || fileMap.isEmpty()) {            result.put("ret", "-1");            result.put("desc", "上传文件不存在");            return result;        }        //项目路径 webapp 下,重新部署会清空        String projectPath = mulRequest.getSession().getServletContext().getRealPath("/");        String dirPath = System.getProperty("catalina.home");        //循环fileMap        int count = 0;        for(String key : fileMap.keySet()){            MultipartFile file = fileMap.get(key);            String filename = file.getOriginalFilename();            //判断是否存在webapp 项目下            if(isSaveInProject){                dirPath = projectPath;            }            //目录不存在,创建            File dirPathFile = new File(dirPath+savePath);            if (!dirPathFile.exists()) {                dirPathFile.mkdirs();            }            //判断是否生成新文件名            if(isNewFileName){                filename = getNewFileName(filename, count);                count++;            }            String filePath = savePath + File.separatorChar + filename;            File saveFile = new File(dirPath+ File.separatorChar +filePath);            try {                file.transferTo(saveFile);            } catch (IllegalStateException e) {                // TODO Auto-generated catch block                e.printStackTrace();            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }            builder.append(filePath).append("&");                   pathList.add(filePath);        }        builder.deleteCharAt(builder.length()-1);        result.put("filePath", builder.toString());        result.put("pathList", pathList);        result.put("ret", 1);        result.put("desc", "上传成功");        return result;    }
0 0
原创粉丝点击