MultipartEntity上传文件时传递中文参数出现乱码的解决方案

最近项目中有个模块需要上传多张图片,在传递每个文件的文件名字的时候,服务端收到的中文是乱码,经检查发现双方都是utf-8,各种调试之后,我把问题定位到MultipartEntity的设置上面,最终找到解决方案,就是设置HttpMultipartMode为浏览器兼容模式,即:

MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, null,
					Charset.forName("UTF-8"));

此外传参时候需要指定编码格式

entity.addPart("fileUploadFileName", new StringBody(file.getName(), Charset.forName("UTF-8")));

下面贴下完整代码:

private String uploadMultiPics(List<String> paths) {
		String result = "fail";
		String url = AppConfig.URL_WEB + "uploadTaskFile" + AppConfig.URL_ACTION;
		try {
			BasicHttpParams params = new BasicHttpParams();
			HttpConnectionParams.setConnectionTimeout(params, 60 * 1000);
			HttpConnectionParams.setSoTimeout(params, 60 * 1000);
			HttpClient client = new DefaultHttpClient(params);
			HttpPost post = new HttpPost(url);
			MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, null,
					Charset.forName("UTF-8"));
			entity.addPart("param.taskId", new StringBody(item.getId()));
			for (int i = 0; i < paths.size(); i++) {
				File file = new File(paths.get(i));
				entity.addPart("fileUpload", new FileBody(file));
				entity.addPart("fileUploadFileName", new StringBody(file.getName(), Charset.forName("UTF-8")));
				entity.addPart("fileType", new StringBody("png"));
			}
			post.setEntity(entity);
			HttpResponse response = client.execute(post);
			if (response.getStatusLine().getStatusCode() == 200) {
				HttpEntity responseEntity = response.getEntity();
				result = EntityUtils.toString(responseEntity);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Java中,使用Multipart参数传递可以通过多种方式实现。其中一种常见的方式是使用MultipartEntity类来构建Multipart参数,然后将其添加到HttpPost请求中。 首先,我们可以创建一个MultipartEntity对象,并使用addPart方法添加Multipart参数,如文件或文本字段。例如: ```java MultipartEntity entity = new MultipartEntity(); File file = new File("example.txt"); entity.addPart("file", new FileBody(file, "text/plain")); entity.addPart("field1", new StringBody("value1", ContentType.TEXT_PLAIN)); ``` 接下来,我们可以创建一个HttpPost请求,并将MultipartEntity对象作为请求实体添加到请求中,然后执行该请求,发送Multipart参数。例如: ```java HttpPost postRequest = new HttpPost("http://example.com/upload"); postRequest.setEntity(entity); HttpClient httpClient = HttpClientBuilder.create().build(); HttpResponse response = httpClient.execute(postRequest); ``` 以上代码示例使用了Apache HttpClient库来发送HTTP请求,其中HttpPost类表示一个HTTP POST请求,MultipartEntity对象表示Multipart参数。通过执行该请求,Multipart参数将被传递到指定的URL。 另外,在Spring框架中,可以使用MultipartFile类来接收Multipart参数。例如,在控制器的方法参数中使用MultipartFile类型的参数接收文件上传,然后进行相应的处理。 总之,Java中Multipart参数传递可以通过构建MultipartEntity或使用相关库提供的工具类来实现,具体方式取决于项目需要和使用的技术栈。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值