spring上传多图片

    xiaoxiao2021-03-25  93

    前端部分

    //可使用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; }
    转载请注明原文地址: https://ju.6miu.com/read-25126.html

    最新回复(0)