MultipartEntityBuilder文件上传和下载
第一步在pom.xml文件中引入
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.5.2</version> </dependency>
访问文件服务器
emptypackage com.hsnn.medstgmini.util; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; import java.util.Map; /** * 多图片上传工具类 * @author fingertap * */ @Component public class MultiPicUploadUtil { @Value("${picupload.url}") private String picUploadUrl;//文件服务器访问地址 /** * key作为表单属性名,value作为对应的文件,可以是集合 * @param inMap * @return * @throws Exception */ public String invokeUpload(Map inMap,String pathName) throws Exception{ HttpClientBuilder builder = HttpClientBuilder.create(); CloseableHttpClient closeableHttpClient = builder.build(); String newPicUploadurl=picUploadUrl+"?pathName="+pathName; HttpPost httpPost = new HttpPost(newPicUploadurl); MultipartEntityBuilder rqEntity = MultipartEntityBuilder.create(); for(String key : inMap.keySet() ){ List list = (List ) inMap.get(key); if(null!=list&&list.size()>0){ for(int i=0;i
文件服务的搭建放在了码云上,访问地址
https://git.oschina.net/wangzhezhiying/medicalstage.git
文件上传时访问的路径
@RequestMapping("toFileUpComp") @ResponseBody public Map toFileUpComp(HttpServletRequest request, ModelMap model) { Pagination page = new Pagination(this.getRequest()); String projCode = (String) page.getConditions().get("projCode"); String projName = (String) page.getConditions().get("projName"); String colnName = (String) page.getConditions().get("colnName"); String workID = (String) page.getConditions().get("workID"); String type = (String) page.getConditions().get("type"); String uuid = (String) page.getConditions().get("uuid"); SysUser user = this.getSysUser(); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; MultiValueMap mulMap = multipartRequest.getMultiFileMap(); //定义list进行接收file文件 Map filemap=new HashedMap(); List list=new ArrayList<>(); for(String key:mulMap.keySet()){ list=mulMap.get(key); filemap.put(key,list); } String compCodeName = user.getOrgId() + user.getName(); //更新配置表数据 Set mulSetAttr = mulMap.keySet(); Iterator mulItAttr = mulSetAttr.iterator(); String pathName = UUID.randomUUID().toString(); while(mulItAttr.hasNext()) { String divId = mulItAttr.next(); List temp = mulMap.get(divId); for(MultipartFile mul : temp) { StdAttachment std = new StdAttachment(); String fileName = mul.getOriginalFilename(); String fileType = fileName.substring(fileName.indexOf(".")+1); std.setAttrId(UUID.randomUUID().toString()); std.setSysId("资质审核系统"); if ("1".equals(type)) { std.setTargetTable("STD_COMP_APP"); } if ("2".equals(type)) { std.setTargetTable("STD_GOODS_APP"); std.setBidAttrId(uuid); } std.setTargetField(colnName); std.setOriginName(fileName); std.setSuffix(fileType); std.setName(pathName + getSuffix(fileName)); std.setRelPath("//" + projCode + "(" + projName + ")" + "//" + compCodeName + "//"); std.setSignId(workID); std.setDivId(divId); std.setProjCode(projCode); std.setCompanyId(user.getOrgId()); stdAttachmentManager.add(std); } } Map message = new HashMap<>();//结果map String pathNames="//" + projCode + "(" + projName + ")" + "//" + compCodeName+"//"+pathName;// 服务器存储文件夹路径 try { String result=multiPicUploadUtil.invokeUpload(filemap,pathNames); message.put("msg", "上传成功!"); message.put("success", true); }catch (Exception e){ e.printStackTrace(); message.put("msg", "上传失败!"); message.put("success", true); } return message; }
注意:文件上传时,改动
1,文件上传时,文件的访问呢路径,及
@Value("${picupload.url}") private String picUploadUrl所指向的地址