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

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

	public @ResponseBody Map uploadFileByHTTP(){  
		String filePath="D:/2.jpg";
		File postFile=new File(filePath);
		String filename=postFile.getName();
		long length=postFile.length();
		String lengths = Long.toString(length);
		MappostParam=new HashMap();
		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 resultMap = new HashMap();  
         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);//相当于    
             //设计文件以外的参数  
             Set keySet = postParam.keySet();  
            /* for (String key : keySet) {  
                //相当于    
                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;    
     }  

你可能感兴趣的:(java后台提交MultipartFile模拟form表单实现文件上传)