HttpClient POST 上传文件传入MultipartFile类型

静态方法

/**
	 * post请求接口
	 * 
	 * @param url
	 * @param imageUploadFileName
	 * @param file
	 * @param headerParams 请求头所需参数键值对
	 * @param otherParams 请求的其他参数
	 * @param timeout
	 *            秒
	 * @return
	 */
	public static String postResultMultipartFile(String url, String imageUploadFileName, MultipartFile file,
			Map<String, String> headerParams, Map<String, String> otherParams, int timeout)
	{
		CloseableHttpClient httpClient = HttpClients.createDefault();
		String result = "";
		HttpEntity httpEntity = null;
		HttpEntity responseEntity = null;
		try
		{
			String fileName = file.getOriginalFilename();
			HttpPost httpPost = new HttpPost(url);
			//添加header
			for (Map.Entry<String, String> e : headerParams.entrySet())
			{
				httpPost.addHeader(e.getKey(), e.getValue());
			}
			MultipartEntityBuilder builder = MultipartEntityBuilder.create();
			builder.setCharset(Charset.forName("utf-8"));
			builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);//加上此行代码解决返回中文乱码问题
			builder.addBinaryBody(imageUploadFileName, file.getInputStream(), ContentType.MULTIPART_FORM_DATA,
				fileName);// 文件流
			// 添加param
			for (Map.Entry<String, String> e : otherParams.entrySet())
			{
				builder.addTextBody(e.getKey(), e.getValue());// 类似浏览器表单提交,对应input的name和value
			}
			httpEntity = builder.build();
			httpPost.setEntity(httpEntity);
			RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(1000 * timeout)
					.setConnectTimeout(1000 * timeout).build();//设置请求时间
			httpPost.setConfig(requestConfig);
			HttpResponse response = httpClient.execute(httpPost);// 执行提交
			responseEntity = response.getEntity();
			if(responseEntity != null)
			{
				// 将响应内容转换为字符串
				result = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));
			}
		}
		catch (Exception e)
		{
			Logger.info("postResultMultipartFile", e);
			e.printStackTrace();
		}
		return result;
	}

调用静态方法示例

Map<String, String> otherParams = new HashMap<String, String>();
Map<String, String> headerParams = new HashMap<String, String>();
otherParams.put("phone", phone);
String assistResult = DcHttpClientUtils.postResultMultipartFile(serverUrl, "img", img, headerParams,otherParams, 10);

接收接口示例

    @RequestMapping(value = "/upload_imgs",method = RequestMethod.POST)
    @ResponseBody
    public JsonResultWrap uploadImgs(HttpServletRequest request, String phone,          
        @RequestParam("img")MultipartFile img )
    {

    }

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值