调业务系统的附件上传 , 附件中文名乱码

发布时间:2021-12-02 04:58:24

调业务系统的附件上传 , 附件中文名乱码提供两种不同的解决方案


1 .?使用RestTemplate方式


? ? ?步骤1 : 编写上传功能


? ? ?public WebResponse upload(@RequestParam(defaultValue = "file") String fileValue,
?? ??? ??? ?HttpServletRequest request) throws IOException {
?? ??? ?HttpHeaders httpHeaders = HttpUtils.getRequestHttpHeaders(request);
?? ??? ?MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
?? ??? ?MultipartFile multipartFile = multipartRequest.getFile(fileValue);
?? ??? ?File localFile = new File(multipartFile.getOriginalFilename());
?? ??? ?FileUtils.writeByteArrayToFile(localFile, multipartFile.getBytes());
?? ??? ?FileSystemResource fileSystemResource = new FileSystemResource(localFile);
?? ??? ?MultiValueMap params = new LinkedMultiValueMap<>();
?? ??? ?params.add(fileValue, fileSystemResource);
?? ??? ?Enumeration parameterNames = request.getParameterNames();
?? ??? ?while (parameterNames.hasMoreElements()) {
?? ??? ??? ?String parameterName = parameterNames.nextElement();
?? ??? ??? ?if (!StringUtils.equalsAny(parameterName, "systemCode", "interfaceCode", "interfaceType", fileValue)) {
?? ??? ??? ??? ?String parameterValue = request.getParameter(parameterName);
?? ??? ??? ??? ?params.add(parameterName, parameterValue);
?? ??? ??? ??? ?logger.info("parameterName: [{}], parameterValue: [{}]", parameterName, parameterValue);
?? ??? ??? ?}
?? ??? ?}
?? ??? ?String url = String.format("%s%s", "https://pes-di1.sit.cmrh.com/pes/mobileApi/mas/", "/upload");
?? ??? ?HttpEntity> requestEntity = new HttpEntity<>(params, httpHeaders);
?? ??? ?Object result = restTemplate.postForObject(url, requestEntity, Object.class);
?? ??? ?localFile.delete();
?? ??? ?return ResponseUtil.success(result, ResponseUtil.SUCCESS);
?? ?}


? ?步骤2 : 处理附件中文名乱码


@Configuration
public class RestTemplateConfig {


?? ?@Bean
?? ?public RestTemplate restTemplate() {
?? ??? ?RestTemplate restTemplate = new RestTemplate();
?? ??? ?restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());


?? ??? ?StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter(StandardCharsets.UTF_8);
?? ??? ?stringHttpMessageConverter.setWriteAcceptCharset(true);


?? ??? ?List mediaTypeList = new ArrayList<>();
?? ??? ?mediaTypeList.add(MediaType.ALL);


?? ??? ?for (int i = 0; i < restTemplate.getMessageConverters().size(); i++) {
?? ??? ??? ?HttpMessageConverter converter = restTemplate.getMessageConverters().get(i);
?? ??? ??? ?if (converter instanceof StringHttpMessageConverter) {
?? ??? ??? ??? ?restTemplate.getMessageConverters().remove(i);
?? ??? ??? ??? ?restTemplate.getMessageConverters().add(i, stringHttpMessageConverter);
?? ??? ??? ?}
?? ??? ??? ?if (converter instanceof MappingJackson2HttpMessageConverter) {
?? ??? ??? ??? ?try {
?? ??? ??? ??? ??? ?((MappingJackson2HttpMessageConverter) converter).setSupportedMediaTypes(mediaTypeList);
?? ??? ??? ??? ?} catch (Exception e) {
?? ??? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?if (converter instanceof FormHttpMessageConverter) {
?? ??? ??? ??? ?((FormHttpMessageConverter) converter).setCharset(StandardCharsets.UTF_8);
?? ??? ??? ??? ?((FormHttpMessageConverter) converter).setMultipartCharset(StandardCharsets.UTF_8);
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return restTemplate;
?? ?}
}


以上两步写完后你可以试着运行 , 会报异常 ,


步骤3 : 添加pom依赖


?? ??? ?
?? ??? ? ? ?com.sun.mail
?? ??? ? ? ?javax.mail
?? ??? ? ? ?1.4.4
?? ??? ?


2 . 使用httpclient方式


public String httpClientUpload(String url, MultipartFile userImageFile
?? ??? ??? ?String clientType) {
?? ??? ?try {
?? ??? ??? ?DefaultHttpClient httpClient = new DefaultHttpClient();
?? ??? ??? ?// 请求处理页面
?? ??? ??? ?HttpPost httppost = new HttpPost(url);
?? ??? ??? ?MultipartEntityBuilder reqEntity = MultipartEntityBuilder.create();
?? ??? ??? ?reqEntity.setCharset(Charset.forName(HTTP.UTF_8));// 设置请求的编码格式
?? ??? ??? ?reqEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
?? ??? ??? ?reqEntity.addPart("file", new ByteArrayBody(userImageFile.getBytes(),
?? ??? ??? ??? ??? ?URLDecoder.decode(userImageFile.getOriginalFilename(), "UTF-8")));
?? ??? ??? ?reqEntity.addBinaryBody(userImageFile.getOriginalFilename(), userImageFile.getBytes());
?? ??? ??? ?HttpEntity entity = reqEntity.build();// 生成 HTTP POST 实体
?? ??? ??? ?httppost.setEntity(entity);// 设置请求参数
?? ??? ??? ?CloseableHttpResponse response = httpClient.execute(httppost);
?? ??? ??? ?if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()) {
?? ??? ??? ??? ?HttpEntity entity1 = response.getEntity();
?? ??? ??? ??? ?return EntityUtils.toString(entity1, Charset.forName("UTF-8"));
?? ??? ??? ?}
?? ??? ?} catch (Exception e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}


?? ??? ?return null;
?? ?}


? ??

相关文档

  • 程序员到底是一个什么职业?
  • 大学生教育工作个人实习总结范文精选
  • 孝亲敬老需行动起来演讲稿精选五篇
  • 2020年8月人民教师入党申请书
  • BZOJ 2730: [HNOI2012]矿场搭建 割点 + 乘法原理
  • win10桌面图标打不开桌面图标打不开的解决技巧
  • 廉洁自律心得体会“我在企业有责任”、“反对浪费节约增效”
  • 我家的老照片随笔
  • 望厦条约的主要内容介绍
  • 传统文化教学反思
  • 对老师诚挚的祝福语
  • 女儿写给父亲的话
  • 田径运动会开幕式主持词
  • 肚子胀气是怎么回事?吃金橘萝卜防止肚子胀气
  • 使命2沉默的演员有哪些
  • 廉颇思赵文言文答案
  • 电脑鼠标右键菜单内容怎么修改设置
  • 么么哒用英文怎么说
  • 金属和非金属有哪些
  • pycharm关闭pytest模式
  • 社交场合礼仪禁忌
  • 饮食安全知识资料
  • 毛坦厂中学2020年高考成绩喜报600分以上有多少人
  • 带你分分钟完成 Flink-HA集群搭建(standalone&&Yarn)
  • 韩剧王国2全智贤的身份是什么会蛊术的是女真人吗
  • 金立s9音质好差怎么办
  • 团员推优申请书范文
  • Mysql实现根据经纬度坐标查询周围区域范围内的所有坐标,并按距离进行排序
  • oppo网络切换3g
  • 春节员工家长慰问信范文
  • 猜你喜欢

  • 会计实务:短期外汇借款的核算
  • 高端婚礼策划案专题培训课件
  • 小学体育探究式教学方式创新初探
  • 第三节 特殊动宾关系练*
  • 2019年最新瑟肽甓茸芙峒跋掳肽昙苹?ぷ髯芙嵛牡怠酒咂??(2)
  • 《登岳阳楼二首》原文、译文、注释及赏析
  • 新疆新宏源矿业有限公司企业信用报告-天眼查
  • 最新初中化学中的天**衡问题[1]
  • 鲁教初中语文七下《27短文两篇记承天寺夜游》PPT课件 (3)
  • 【合同协议范本】国内著作权维权专项法律服务合同书
  • 人教版高中语文外国小说欣赏《四单元 阅读 .素芭》优质课教案_0
  • 低压配电柜项目可行性研究报告申请报告模板
  • 红米note5价格
  • 鲁科版小学英语五年级(五四学制)(三起)上册Unit7 Lesson 1 We visit relatives and friends课件
  • 甘肃省天水市2017-2018学年高一语文上学期开学考试试
  • 八年级数学上册第15章轴对称图形和等腰三角形15.4角的*分线第2课时角的*分线的判定课件新版沪科版
  • 调dubbo接口包报错 Failed to invoke the method
  • 2014年中国专项化学用品制造行业陕西省延安市TOP10企业排名
  • 痛风发病机理饮食预防
  • 配套K12云南省腾冲市第八中学2018-2019学年高一物理上学期期中试题
  • 最新-《人物形象设计》课程教学大纲 精品
  • 手环对身体有没有伤害
  • idea中使用git分享项目到码云出现Failed to create Gitee Repository-其中一个低级错误
  • 汽车音响用钢铁构件投资建设项目立项报告
  • 浙江省富阳市第二中学2015届高三上学期第二次质量检测数学(理)试题
  • 煤炭企业薪酬管理现状及对策(一)
  • 街道开展深入学习实践科学发展观动员大会上的讲话
  • 诚实守信的作文500字
  • 2008年汽车价格上涨或下跌谁唱主角?
  • 母亲八十大寿答谢词
  • 动物绘画作品范画
  • 孙悟空为何成佛不成仙
  • 最新人教版九年级初中语文下册乘着音乐的翅膀(40)
  • 抗氧化系统发育与少突胶质细胞损伤作用的研究进展
  • LeetCode: Remove Nth Node From End of List
  • 表语和宾语的区别
  • 003王尔德童话--了不起的火箭
  • 2017年考勤异常统计表
  • 临床科室质量与安全指标统计表
  • 即兴演讲稿范本
  • 闭塞性细支气管炎伴机化性肺炎的临床表现与HRCT特点
  • 2011届高三历史上册期中调研考试试卷6
  • 电脑版