当前位置: 首页> 教育> 锐评 > 中信建设有限责任公司总部在哪_酒店局域网网络规划与设计_线上推广费用预算_百度一键安装

中信建设有限责任公司总部在哪_酒店局域网网络规划与设计_线上推广费用预算_百度一键安装

时间:2025/7/11 9:39:27来源:https://blog.csdn.net/m0_74824635/article/details/146166669 浏览次数:2次
中信建设有限责任公司总部在哪_酒店局域网网络规划与设计_线上推广费用预算_百度一键安装

在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;//从输入流中读取一定数量的字节,并将其存储在缓冲区字节数组中,读到末尾返回-1while ((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;//从输入流中读取一定数量的字节,并将其存储在缓冲区字节数组中,读到末尾返回-1while ((len = inputStream.read(b)) > 0) {outputStream.write(b, 0, len);}inputStream.close();} catch (IOException e) {System.out.println("文件正在被下载");}
}

关键字:中信建设有限责任公司总部在哪_酒店局域网网络规划与设计_线上推广费用预算_百度一键安装

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: