Expected MultipartHttpServletRequest: is a MultipartResolver configured?
来源:互联网 发布:googlenet网络结构 编辑:程序博客网 时间:2024/05/18 06:21
Spring mvc 上传多个文件问题:
1、文件上传中from必须指定enctype="multipart/form-data",如:<formid="formImport"class="form-horizontal"enctype="multipart/form-data">
页面上传的Request payload:
------WebKitFormBoundary5LvjgAmqutDyQEjpContent-Disposition: form-data; name="file"; filename="模板.xls"
1、用request.gerParameter("modelId")无法获取页面传入的参数,获取为null。
CommonsMultipartResolver multipartResolver= new CommonsMultipartResolver(request.getServletContext());MultipartHttpServletRequest multipartHttpServletRequest = multipartResolver.resolveMultipart(request);String modelTypeString = multipartHttpServletRequest.getParameter("modelType").trim();2、获取多个文件:
页面的jsp为:
<div class="fileupload-btn"> <span class="btn default btn-file"> <span class="fileupload-new">浏览</span> <span class="fileupload-exists">更改</span> <input name="file1" type="file" isFile="pic" class="default" /> </span> <span class="btn default btn-eraser fileupload-exists" data-dismiss="fileupload">清除</span></div>
<input name="file2" type="file" isFile="pic" class="default" />
<input name="file3" type="file" isFile="pic" class="default" />spring mvc获取多个文件:
spring -mvc-servlet.xml配置:
<!-- 支持上传文件 --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8"/> <property name="maxUploadSize" value="1073741824"/> <property name="maxInMemorySize" value="40960"/></bean>
controller获取多个文件:
方式一:
@RequestMapping(value = "models/{id}",method = RequestMethod.PUT, produces = "application/json;charset=UTF-8") @ResponseBody public String models(@PathVariable int id,HttpServletRequest request, HttpSession session){ String json = null; <span style="color:#3366ff;">CommonsMultipartResolver multipartResolver= new CommonsMultipartResolver(request.getServletContext()); MultipartHttpServletRequest multipartHttpServletRequest = multipartResolver.resolveMultipart(request); String modelTypeString = multipartHttpServletRequest.getParameter("modelType").trim();</span> String weightString = multipartHttpServletRequest.getParameter("weight").trim(); String size = multipartHttpServletRequest.getParameter("size").trim(); String modelColorString = multipartHttpServletRequest.getParameter("modelColor").trim(); String os = multipartHttpServletRequest.getParameter("os").trim(); String describe = multipartHttpServletRequest.getParameter("describe").trim(); String image1 = multipartHttpServletRequest.getParameter("image1").trim(); image1 = image1.substring(image1.lastIndexOf("/")+1,image1.length()); String image2 = multipartHttpServletRequest.getParameter("image2").trim(); image2 = image2.substring(image2.lastIndexOf("/")+1,image2.length()); String image3 = multipartHttpServletRequest.getParameter("image3").trim(); image3 = image3.substring(image3.lastIndexOf("/")+1,image3.length()); if (StringUtils.isEmpty(size)||StringUtils.isEmpty(os)||StringUtils.isEmpty(modelTypeString) ||StringUtils.isEmpty(modelColorString)||StringUtils.isEmpty(weightString)){ json = Json.getStatusMessage(1030,MessageCode.getMessageStatusCode(1030)); }else { Map map = new HashMap(); List<String> list = new ArrayList<String>(); map.put("modelType",Integer.parseInt(modelTypeString)); map.put("modelColor",Integer.parseInt(modelColorString)); map.put("weight",Double.parseDouble(weightString)); map.put("size",size); map.put("os",os); if(!StringUtils.isEmpty(describe)){ map.put("describe",describe); } <span style="background-color: rgb(51, 102, 255);"> Iterator<String> iterator = multipartHttpServletRequest.getFileNames();//获取多个文件名</span> String ftpStore = FTPClientUtils.getFTPSetting("ftpStore"); String modelImgPath = FTPClientUtils.getFTPSetting("modelPath"); String FtpUploadPath = ftpStore+"/"+modelImgPath+"/"; if (FTPClientUtils.openConnectFTPService()) { <span style="background-color: rgb(51, 102, 255);"> while (iterator.hasNext()) {//遍历多个文件</span> <span style="background-color: rgb(51, 102, 255);"> String requestName = iterator.next(); MultipartFile multipartFile = multipartHttpServletRequest.getFile(requestName);//获取文件</span> <span style="background-color: rgb(51, 102, 255);"> if (!multipartFile.isEmpty()) {//判断文件不为空</span> String fileName = multipartFile.getOriginalFilename();//获取文件名 String[] fileNames = fileName.split("\\."); String type = fileNames[fileNames.length - 1]; String remoteFileName = CommonUtils.UUID() + "." + type; try { boolean flag = FTPClientUtils.inputStreamUploadFile(<span style="background-color: rgb(51, 102, 255);">multipartFile.getInputStream()</span>, remoteFileName, FtpUploadPath); if (!flag) { return Json.getStatusMessage(1033, MessageCode.getMessageStatusCode(1033)); } } catch (IOException e) { logger.info("修改图片上传失败!"); e.printStackTrace(); } list.add(FtpUploadPath+remoteFileName); if(requestName.equals("file1")){ map.put("image1", remoteFileName); }else if (requestName.equals("file2")){ map.put("image2", remoteFileName); }else if (requestName.equals("file3")){ map.put("image3", remoteFileName); } } } }else { return Json.getStatusMessage(1032,MessageCode.getMessageStatusCode(1032)); } json = HttpProtocolHandle.commitData("PUT", APIConstant.BASIC+"models/"+id, JSONObject.fromObject(map).toString(), session); if(Json.isSuccess(json)){ if(map.get("image1")!=null){ FTPClientUtils.deleteFile(FtpUploadPath+image1); } if(map.get("image2")!=null){ FTPClientUtils.deleteFile(FtpUploadPath+image2); } if(map.get("image3")!=null){ FTPClientUtils.deleteFile(FtpUploadPath+image3); } }else{ for (int i=0;i<list.size();i++) { if(!FTPClientUtils.deleteFile(list.get(i))){ logger.info("型号图片上传,业务服务器数据保存失败,删除"+map.get("image"+i).toString()+"失败!"); } } list.clear(); } FTPClientUtils.closeConnection(); } return json; }方式二:
@RequestMapping(value = "models",method = RequestMethod.POST, produces = "application/json;charset=UTF-8") @ResponseBody public String createModels(@RequestParam("file") MultipartFile[] file, HttpServletRequest request, HttpSession session){ String json = null; String name = request.getParameter("name").trim(); String modelTypeString = request.getParameter("modelType").trim(); String modelColorString = request.getParameter("modelColor").trim(); String weightString = request.getParameter("weight"); String size = request.getParameter("size").trim(); String os = request.getParameter("os").trim(); String describe = request.getParameter("describe").trim(); if (StringUtils.isEmpty(name)||StringUtils.isEmpty(size)||StringUtils.isEmpty(os)||StringUtils.isEmpty(modelTypeString) ||StringUtils.isEmpty(modelColorString)||StringUtils.isEmpty(weightString)){ json = Json.getStatusMessage(1030,MessageCode.getMessageStatusCode(1030)); }else { Map map = new HashMap(); map.put("name",name); map.put("modelType",Integer.parseInt(modelTypeString)); map.put("modelColor",Integer.parseInt(modelColorString)); map.put("weight",Double.parseDouble(weightString)); map.put("size",size); map.put("os",os); if(!StringUtils.isEmpty(describe)){ map.put("describe",describe); } if(file != null && file.length > 0){//判断文件不能为空,file数组必须大于0才有文件 if( FTPClientUtils.openConnectFTPService()){ String ftpStore = FTPClientUtils.getFTPSetting("ftpStore"); String modelImgPath = FTPClientUtils.getFTPSetting("modelPath"); String FtpUploadPath = ftpStore+"/"+modelImgPath+"/";// String visitPath = FTPClientUtils.getFTPSetting("visitPath")+modelImgPath; try{ List<String> list = new ArrayList<String>();
//循环遍历多个文件 for (int i=0;i<file.length;i++){ String fileName = file[i].getOriginalFilename();//获取文件名 String[] fileNames= fileName.split("\\."); String type = fileNames[fileNames.length-1];//获取文件名后缀 String remoteFileName = CommonUtils.UUID()+"."+type;//通过UUID获取唯一ID来做文件名
//file[i].getInputStream()通过IO流的形式保存文件到资源服务器 boolean flag = FTPClientUtils.inputStreamUploadFile(file[i].getInputStream(),remoteFileName,FtpUploadPath); if (!flag){ return Json.getStatusMessage(1033,MessageCode.getMessageStatusCode(1033)); } map.put("image"+(i+1),remoteFileName); list.add(FtpUploadPath+remoteFileName); } JSONObject jsonObject = JSONObject.fromObject(map); json = HttpProtocolHandle.commitData("POST", APIConstant.BASIC+"models", jsonObject.toString(), session); if (!Json.isSuccess(json)){ for (int i=0;i<list.size();i++) { if(!FTPClientUtils.deleteFile(list.get(i))){ logger.info("型号图片上传,业务服务器数据保存失败,删除"+map.get("image"+i).toString()+"失败!"); } } } list.clear(); }catch (IOException e){ e.printStackTrace(); } FTPClientUtils.closeConnection(); }else { json = Json.getStatusMessage(1032,MessageCode.getMessageStatusCode(1032)); } }else { json = Json.getStatusMessage(1031,MessageCode.getMessageStatusCode(1031)); } } return json; }
0 0
- Expected MultipartHttpServletRequest: is a MultipartResolver configured
- Expected MultipartHttpServletRequest: is a MultipartResolver configured?
- Expected MultipartHttpServletRequest: is a MultipartResolver configured?
- Expected MultipartHttpServletRequest: is a MultipartResolver configured?
- Expected MultipartHttpServletRequest: is a MultipartResolver configured方案。
- 解决Expected MultipartHttpServletRequest: is a MultipartResolver configured问题。
- spring MVC报错 Expected MultipartHttpServletRequest: is a MultipartResolver configured?
- 解决Expected MultipartHttpServletRequest: is a MultipartResolver configured报错
- springmvc上传附件出现异常Expected MultipartHttpServletRequest: is a MultipartResolver configured?
- Springmvc图片上传方法,错误:Expected MultipartHttpServletRequest: is a MultipartResolver configured?
- spring上传文件报错Expected MultipartHttpServletRequest: is a MultipartResolver configured?
- 【SpringMVC】文件上传Expected MultipartHttpServletRequest: is a MultipartResolver错误解决
- java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver con
- java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver con
- java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver con
- 【SpringMVC】文件上传Expected MultipartHttpServletRequest: is a MultipartResolver错误解决
- springMVC使用multipartFile上传文件出错:MultipartHttpServletRequest: is a MultipartResolver configured?
- 【SpringMVC】文件上传Expected MultipartHttpServletRequest: is a MultipartResolver错误解决【实测可用】
- 基础网络加载
- Volley源码解析
- Jquery Mobile中组件内容更新后的刷新办法
- Android之SharedPreferences详解
- system()返回值分析
- Expected MultipartHttpServletRequest: is a MultipartResolver configured?
- Android修改APN的配置
- springMvc和shiro整合,shiro的realm不能自动注入的问题
- tmux 参数
- dma
- AOP面向切面简介
- 如何发表第一篇论文
- Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'
- JS ready和onload事件 比较分析