使用axios上传二进制zip文件到第三方API出现ENOENT错误如何解决
错误原因
- 路径报错:你将
req.files对象直接拼接进文件路径,对象转为字符串时会变成[object Object],导致fs尝试读取的路径不存在,触发ENOENT错误 - 格式不符需求:你当前使用FormData封装数据,默认就是
multipart/form-data格式,和你需要的二进制直传需求不匹配。且你使用的上传中间件已经将文件内容加载到内存Buffer中,没有生成临时文件,不需要通过fs读取文件。
调整后代码
直接将已拿到的文件Buffer作为请求体传入即可,对应Postman中选择binary的效果:
const zipBuffer = req.files.file.data; axios.post(url, zipBuffer, { headers: { // 按第三方接口要求设置内容类型,zip文件可指定为application/zip,通用二进制可设为application/octet-stream 'Content-Type': 'application/zip' } }) .then(response => { // 处理接口返回 }) .catch(error => { // 处理异常 })
内容的提问来源于stack exchange,提问作者John doe
相关产品推荐
相关产品推荐

