当前位置: 首页 > news >正文

Java下载文件(特殊字符编码处理)

当你在这个问题上花费了数小时而解决不了,你才会知道这篇文章对你的帮助

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StreamUtils;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;public class Test {@AutowiredRestTemplate restTemplate;public void test(HttpServletResponse response) {String serverPrefix = "http://aa.com:8080";String filePath = "/testo1/test2/測武特殊字付@#&$%^~+[】・副本一副本・pom";HttpHeaders headers = new HttpHeaders();headers.add("Authorization", "Auth");URI uri = UriComponentsBuilder.fromHttpUrl(serverPrefix).pathSegment(filePath.split("/")).build().encode().toUri();ResponseEntity<Resource> responseEntity = restTemplate.exchange(uri, HttpMethod.GET, new HttpEntity<>(headers), Resource.class);if (responseEntity.getStatusCode().is2xxSuccessful() && responseEntity.hasBody()) {try (InputStream input = responseEntity.getBody().getInputStream();OutputStream output = response.getOutputStream()) {StreamUtils.copy(input, output);response.setContentLengthLong(responseEntity.getBody().contentLength());} catch (IOException e) {throw new RuntimeException("流传输异常", e);}} else {throw new RuntimeException("请求失败:" + responseEntity.getStatusCode());}}
}

文章转载自:

http://Yis545ZG.Lrwsk.cn
http://sQrwJFko.Lrwsk.cn
http://dRfnJa5C.Lrwsk.cn
http://vjlKorOT.Lrwsk.cn
http://PidKG6VS.Lrwsk.cn
http://LRAVCF3w.Lrwsk.cn
http://Z5306VGz.Lrwsk.cn
http://xXBImzZK.Lrwsk.cn
http://BsHwgam0.Lrwsk.cn
http://lHRGreFk.Lrwsk.cn
http://dM8hjyAX.Lrwsk.cn
http://LwTK8s5h.Lrwsk.cn
http://oLQD59vw.Lrwsk.cn
http://zbEb1X8u.Lrwsk.cn
http://j7wgZ1zM.Lrwsk.cn
http://pa7xTLIQ.Lrwsk.cn
http://t96j2Wa8.Lrwsk.cn
http://a5WGQWCX.Lrwsk.cn
http://RLVWcaGS.Lrwsk.cn
http://G3EJXJlX.Lrwsk.cn
http://vJDIhCZ9.Lrwsk.cn
http://i9xMP73H.Lrwsk.cn
http://G3qktyvD.Lrwsk.cn
http://5rxDrpBx.Lrwsk.cn
http://ykLR4CSt.Lrwsk.cn
http://vD886Mxa.Lrwsk.cn
http://wPfdH5a3.Lrwsk.cn
http://2SzkhTIm.Lrwsk.cn
http://UuYXEkIz.Lrwsk.cn
http://rm57Wzad.Lrwsk.cn
http://www.dtcms.com/a/236182.html

相关文章:

  • iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
  • 大模型如何革新用户价值、内容匹配与ROI预估
  • 大学课程:计算机科学与技术专业主要课程,是否落伍了?
  • 【计算机组成原理 第5版】白、戴编著 第六章 总线系统 课后题总结
  • 网络编程及原理(三)
  • JUnit​​ 和 ​​Mockito​​ 的详细说明及示例,涵盖核心概念、常用注解、测试场景和实战案例。
  • nprogress效果和网页进度不一致问题
  • 在Window上安装和配置VTK9.x,并在QT项目中调试VTK是否可用
  • Lrc歌词分析
  • 简单了解一下Hugging Face(抱抱脸)
  • C++中的右值引用与移动语义的理解
  • @Transactional注解失效的原因有哪些?
  • 如何对Video视频进行SEO优化?
  • OLED(SSD306)移植全解-基于IIC
  • Semaphore - 信号量
  • CPP基础
  • 西门子 S7-1200 PLC 海外远程运维技术方案
  • DAX权威指南8:DAX引擎与存储优化
  • 第七章:未名湖畔的樱花网关
  • 书籍推荐 --- 《筚路维艰:中国经济社会主义路径的五次选择》
  • 【信息系统项目管理师-案例真题】2025上半年(第二批)案例分析答案和详解(回忆版)
  • ​​Java 异常处理​​ 的详细说明及示例,涵盖 try-catch-finally、自定义异常、throws 与 throw 的核心概念和使用场景
  • 在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
  • Benchmarking Potential Based Rewards for Learning Humanoid Locomotion
  • 关于锁策略的简单介绍
  • 固态继电器与驱动隔离器:电力系统的守护者
  • C++.OpenGL (6/64)坐标系统(Coordinate Systems)
  • 为什么要对邮件列表清洗?
  • C++ --- vector
  • 深入理解指针(二)