下载报错:No converter for XXX with preset Content-Type ‘application/octet-steam;charset=utf-8‘

博客给出一个解决方法,在Java中把下载方法的返回值去掉,改成void类型。

解决方法:把下载方法的返回值去掉,改成void

此错误通常是由于SpringMVC在转换响应内容时,预设的 `Content-Type` 为 `application/octet-stream;charset=ISO8859-1`,但找不到合适的转换器来处理特定的响应对象导致的。可参考以下解决方法: ### 情况一:接口为下载文件,但存在异常返回JSON数据 若此接口是用于下载文件,不过逻辑里存在异常状况,且响应对象设置了 `Content-Type` 为 `application/octet-stream`。当内部抛出异常后返回一个通用的JSON格式实体对象,SpringMVC在转换时就会报错。 解决的关键在于上述响应头固定为返回流数据,可设置兼容其他格式,或者这样设置: ```java @PostMapping(value = "xxxx", produces = {MediaType.APPLICATION_OCTET_STREAM_VALUE, MediaType.APPLICATION_JSON_VALUE}) ``` 其中 `xxxx` 为具体的接口路径。这样设置后,接口就能兼容返回文件流和JSON数据了 [^2]。 ### 情况二:返回图片数据时返回了实例 在springboot + vue前后端分离项目里,若在vue前端页面富文本编辑时,通过 `response.setContentType("application/octet-stream")` 返回前端图片数据,且返回了实例,就可能引发该错误。可以把方法体修改为 `public void`,或者直接返回 `return null` [^3]。 示例代码如下: ```java // 修改前 public GlobalResult getImageInfo() { // 获取图片信息的逻辑 return GlobalResult.success(); } // 修改后 public void getImageInfo(HttpServletResponse response) { // 获取图片信息的逻辑 // 将图片数据写入response try (OutputStream os = response.getOutputStream()) { // 写入图片数据 } catch (IOException e) { e.printStackTrace(); } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值