请求出现“Content type ‘application/octet-stream‘not supported“错误

编程知识 更新时间:2023-04-05 05:25:59

请求出现"Content type 'application/octet-stream‘not supported“错误

  • 错误描述:
    Content type 'application/octet-stream‘not supported,即内容类型’application/octet-stream '不支持。由此可见,我们这里传的参数需要’application/octet-stream’类型支持。
    octet-stream:任意二进制流数据。
    application/octet-stream:只能提交二进制或文件。
  • 出现错误的请求:
    POST 请求,需要传一个 file 文件和一个 json 字符串,如下图所示:

    react 前端提交表单传参这样写,此时 blackListBatch 传的是 json 字符串,如下:
const { file } = values;
const formData = new FormData();
formData.append('file', file[0].originFileObj);

const newValue = _.cloneDeep(values);
delete newValue.file;
const json = JSON.stringify(newValue);
formData.append('blackListBatch', json);

const params = {
  data: formData,
  callback: () => {
    message.success(intl('导入成功'));
  },
};
// 请求接口
offlineImport(params);

然后浏览器就出现了上面的报错。

  • 解决办法:
    由错误描述可知,我们这里不能传一个json字符串,而是一个二进制,这时需要使用 Blob() 构造函数将 json 字符串转化为 Blob 对象(Blob 对象表示一个不可变、原始数据的类文件对象,它的数据可以按文本或二进制的格式进行读取)放到 formData 中,如下:
const { file } = values;
const formData = new FormData();
formData.append('file', file[0].originFileObj);

const newValue = _.cloneDeep(values);
delete newValue.file;
const json = JSON.stringify(newValue);
// 将 json 字符串转化为 Blob 对象
const blob = new Blob([json], {
 	type: 'application/json',
});
formData.append('blackListBatch', blob);

const params = {
  data: formData,
  callback: () => {
    message.success(intl('导入成功'));
  },
};
// 请求接口
offlineImport(params);

type: ‘application/json’ 表示将会被放入到 blob 中的数组内容的类型是 json 字符串。

如上,便可解决该报错。

更多推荐

请求出现“Content type ‘application/octet-stream‘not supported“错误

本文发布于:2023-04-05 05:25:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/83409c355b0501a8780790d372398217.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:错误   application   type   Content   supported

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 45001文章数
  • 14阅读数
  • 0评论数