如何使用got向远程URL上传文件?已尝试代码未达预期效果
解决Got上传文件无效的问题
你当前代码的核心问题是误用了json字段传递文件流——json参数专门用于发送JSON格式的数据,完全不适合处理文件流的上传场景。
修复方案分两种场景:
场景1:后端接收原始二进制文件
直接把json字段换成body,保留对应Content-Type即可:
const headers = { "Content-Type": "image/png" } const requestProperties = { method: 'POST', url, headers, body: fs.createReadStream(file.path) } const response = await got(requestProperties);
场景2:后端接收multipart/form-data格式(常见的表单上传)
这种情况需要用FormData构建请求体,让它自动生成正确的请求头,避免手动设置出错:
const FormData = require('form-data'); const form = new FormData(); form.append('file', fs.createReadStream(file.path), { filename: 'image.png', // 可根据实际文件名调整 contentType: 'image/png' }); const requestProperties = { method: 'POST', url, body: form, headers: form.getHeaders() } const response = await got(requestProperties);
补充说明
- 若不确定后端接收格式,优先尝试第二种场景,这是绝大多数文件上传接口的标准格式。
- 手动设置
Content-Type时,一定要确保和请求体格式匹配,否则后端无法正确解析。
内容的提问来源于stack exchange,提问作者Sufail Kalathil
相关产品推荐
相关产品推荐

