Apache下的MultipartEntityBuilder 文件上传

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所指向的地址





  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值