请求出现“Content type ‘application/octet-stream‘not supported“错误
一、场景
记一个接口调试问题,前端传参包括文件+json字符串,请求头
'Content-Type': 'multipart/form-data',
请求参数
params = { addVo: JSON.stringify({xxx: xxx}), multipartFile: this.files }
参数处理formdata:
console.log(params); let data = new FormData(); Object.keys(params).forEach(key => { if (Array.isArray(params[key])) { params[key].forEach(item => { data.append(key, item.raw); }); } else { data.append(key, params[key]); } });
二、错误描述
错误描述:
Content type 'application/octet-stream‘not supported,即内容类型’application/octet-stream '不支持。由此可见,我们这里传的参数需要’application/octet-stream’类型支持。
octet-stream:任意二进制流数据。
application/octet-stream:只能提交二进制或文件。
三、解决办法
由错误描述可知,我们这里不能传一个json字符串,而是一个二进制,这时需要使用 Blob() 构造函数将 json 字符串转化为 Blob 对象(Blob 对象表示一个不可变、原始数据的类文件对象,它的数据可以按文本或二进制的格式进行读取)放到 formData 中,如下:
json = JSON.stringify({ xxx: xxx
}); console.log('json', JSON.parse(json)); // 将 json 字符串转化为 Blob 对象 blob = new Blob([json], { type: 'application/json', }); params = { addVo: blob, multipartFile: this.files }
说明:type: ‘application/json’ 表示将会被放入到 blob 中的数组内容的类型是 json 字符串。

浙公网安备 33010602011771号