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

springboot 文件下载

在springboot中,执行如下代码实现文件下载

@GetMapping("/file/download/test") public void Download(HttpServletResponse response){ try { String path = "XXXXXXXXXXXX";//文件路径 File file = new File(path); // 读到流中 InputStream inputStream = Files.newInputStream(Paths.get(path));// 文件的存放路径 response.reset(); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(file.getName(), "UTF-8")); response.setContentLengthLong(file.length()); ServletOutputStream outputStream = response.getOutputStream(); byte[] b = new byte[1024]; int len; //从输入流中读取一定数量的字节,并将其存储在缓冲区字节数组中,读到末尾返回-1 while ((len = inputStream.read(b)) > 0) { outputStream.write(b, 0, len); } inputStream.close(); } catch (IOException e) { e.printStackTrace(); } }

访问地址,执行下载时,会出错:

No converter for [class cn.hutool.core.io.resource.InputStreamResource] with preset Content-Type ‘application/octet-stream’

对于具有预设内容类型“application/octet流”的[class cn.hutool.core.io.resource.InputStreamResource],没有转换器

当然,在出现错误时,我在想是不是application/octet-stream的问题,也使用过multipart/form-data,但也是一样的结果。

application/octet-stream和multipart/form-data的区别:

或者是这个错误:

org.apache.catalina.connector.ClientAbortException: java.io.IOException: 你的主机中的软件中止了一个已建立的连接。

但是即使会报错,文件还是能完整的下载下来。

找了很久的解决方法,但是没有发现什么正确的答案。

这里贴出来一些别人的解答,供参考思考,本人试过但没成功:

Spring Boot 异常:HttpMessageNotWritableException: No Converter for [class …] With Preset Content-Type - spring 中文网

No converter for XXX with preset Content-Type ‘application/octet-stream;charset=UTF-8‘_unkonwncontenttypeexception-CSDN博客

下载/导出问题(统一返回):No converter for xxx with preset Content-Type ‘application/octet-stream;charset=UTF-8-CSDN博客

这里给出帖主的解决方法:

既然这里访问文件能正确的完成下载,我们就让不进行异常操作:

@GetMapping("/file/download/test") public void Download(HttpServletResponse response){ try { String path = "XXXXXXXXXXXX";//文件路径 File file = new File(path); // 读到流中 InputStream inputStream = Files.newInputStream(Paths.get(path));// 文件的存放路径 response.reset(); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(file.getName(), "UTF-8")); response.setContentLengthLong(file.length()); ServletOutputStream outputStream = response.getOutputStream(); byte[] b = new byte[1024]; int len; //从输入流中读取一定数量的字节,并将其存储在缓冲区字节数组中,读到末尾返回-1 while ((len = inputStream.read(b)) > 0) { outputStream.write(b, 0, len); } inputStream.close(); } catch (IOException e) { System.out.println("文件正在被下载"); } }

http://www.cnnetsun.cn/news/1267388.html

相关文章:

  • 零基础玩转Qwen3-1.7B:手把手教你用LangChain搭建智能对话机器人
  • MedGemma快速入门:三步启动,与你的AI医疗伙伴对话
  • 忘记PPT密码怎么办?巧用Tenorshare PassFab for PPT绿色版一键解除限制找回密码附工具教程
  • Switch自定义系统与优化完全指南:释放游戏设备潜能
  • 拯救被抛弃的Mac:2亿台老旧设备的逆袭之路
  • 什么是 Java 的 happens-before 规则?
  • Qwen2.5-VL-7B-Instruct一文详解:如何构造高质量多模态SFT训练数据
  • 智能硬件集成:SenseVoice-Small ONNX嵌入式设备语音识别方案
  • 深入解析fio:从基础使用到高级性能调优
  • ChatGPT私有化部署实战:从模型加载到API服务优化
  • 突破小爱音箱音乐限制:XiaoMusic自由播放解决方案全攻略
  • Flutter 三方库 ethiopian_datetime 鸿蒙适配指南 - 实现东非特殊历法转换、在 OpenHarmony 上打造全球化本地应用实战
  • 基于立创开发板与R7FA6E2BB3CNE的BH1750FVI光照传感器I2C驱动移植与数据采集实战
  • xxl-job升级避坑指南:2.2.0到2.3.1常见问题及解决方法
  • TTL与非门电路实战:从原理图到面包板搭建全流程(附常见问题排查)
  • 小龙虾(OpenClaw)配置第三方中转Api的完整图文教程
  • Dify 2026多模态向量对齐失败诊断图谱(含t-SNE可视化热力图+CLIP空间偏移校准公式)
  • 丹青识画系统在网络安全中的应用:恶意图像内容智能识别
  • java ssm基于J2EE线上医药用品分销系统设计与实现论文
  • ComfyUI-VideoHelperSuite高效实践指南:VHS_VideoCombine专业技巧与工作流优化
  • USB供电的宽量程高精度直流电流采集仪设计
  • Windows下Python报错:ModuleNotFoundError: No module named ‘readline‘的终极解决方案
  • Z-Image-Turbo-辉夜巫女入门必看:LoRA模型 vs 基座模型差异及Z-Image-Turbo适配要点
  • Qwen3-Embedding-4B一文详解:文本向量化底层逻辑、余弦相似度计算与GPU优化要点
  • 深入解析 Android Room 数据库的 Journal Mode 选择与优化策略
  • buildAdmin实战:从安装到代码生成器的全流程解析
  • SecGPT-14B惊艳输出:对某0day漏洞PoC代码的逐行安全语义解析
  • cv_resnet18_ocr-detection应用案例:截图文字识别与批量处理技巧
  • Gemma-3 Pixel Studio效果实测:同一张图5次不同提问获得专业级分层解读
  • 从4个维度彻底解决洛雪音乐六音音源失效难题