java后台提交MultipartFile模拟form表单实现文件上传

java后台提交MultipartFile模拟form表单实现文件上传

	public @ResponseBody Map<String,Object> uploadFileByHTTP(){  
		String filePath="D:/2.jpg";
		File postFile=new File(filePath);
		String filename=postFile.getName();
		long length=postFile.length();
		String lengths = Long.toString(length);
		Map<String,String>postParam=new HashMap<String,String>();
		postParam.put("chunk_offset","0");
		postParam.put("chunk_size",lengths);
		String postUrl="http://obs.casearth.cn/api/v1/obj/haf/ceshi/"+filename+"/?reset=true";
		Map<String,Object> resultMap = new HashMap<String,Object>();  
         CloseableHttpClient httpClient = HttpClients.createDefault(); 
         try{    
             //把一个普通参数和文件上传给下面这个地址    是一个servlet    
             HttpPost httpPost = new HttpPost(postUrl);  
             httpPost.addHeader("Authorization", "Token 666abbf788ef1aacdb76a4f711509a8b391b6c8d");
             //把文件转换成流对象FileBody  
             FileBody fundFileBin = new FileBody(postFile);    
             //设置传输参数  
             MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create();    
             multipartEntity.addPart("chunk", fundFileBin);//相当于<input type="file" name="media"/>    
             //设计文件以外的参数  
             Set<String> keySet = postParam.keySet();  
            /* for (String key : keySet) {  
                //相当于<input type="text" name="name" value=name>    
                multipartEntity.addPart(key, new StringBody(postParam.get(key), ContentType.create("text/plain", Consts.UTF_8)));    
             }  */
             multipartEntity.addPart("chunk_offset", new StringBody("0", ContentType.create("text/plain", Consts.UTF_8)));    
             multipartEntity.addPart("chunk_size", new StringBody(lengths, ContentType.create("text/plain", Consts.UTF_8)));    

             HttpEntity reqEntity =  multipartEntity.build();   
             httpPost.setEntity(reqEntity);    
                 
             log.info("发起请求的页面地址 " + httpPost.getRequestLine());    
             //发起请求   并返回请求的响应    
             CloseableHttpResponse response = httpClient.execute(httpPost);    
             try {    
                 log.info("----------------------------------------");    
                 //打印响应状态    
                 log.info(response.getStatusLine());  
                 resultMap.put("statusCode", response.getStatusLine().getStatusCode());  
                 //获取响应对象    
                 HttpEntity resEntity = response.getEntity();    
                 if (resEntity != null) {    
                     //打印响应长度    
                     log.info("Response content length: " + resEntity.getContentLength());    
                     //打印响应内容    
                     resultMap.put("data", EntityUtils.toString(resEntity,Charset.forName("UTF-8")));  
                 }    
                 //销毁    
                 EntityUtils.consume(resEntity);    
             } catch (Exception e) {  
                 e.printStackTrace();  
             } finally {    
                 response.close();    
             }    
         } catch (ClientProtocolException e1) {  
            e1.printStackTrace();  
         } catch (IOException e1) {  
            e1.printStackTrace();  
         } finally{    
             try {  
                httpClient.close();  
             } catch (IOException e) {  
                e.printStackTrace();  
             }    
         }  
        log.info("uploadFileByHTTP result:"+resultMap);  
        return resultMap;    
     }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值