node.js - 使用预签名 url 流式上传到 S3 失败,出现 403
问题描述
使用 nodeJs 将二进制文件上传到预签名的 S3 url,当正文作为缓冲区呈现时请求成功,但在作为流呈现时失败并返回 403。文档表明 body 可以是缓冲区或流。
// this succeeds
request({
url: uploadUrl,
headers: {
'Content-Length':length
}
method: 'put',
body: fs.readFileSync(name),
},(err,resp,body)=>{
..
})
// this fails with 403
request({
url: uploadUrl,
method: 'put',
headers: {
'Content-Length':length
}
body: fs.createReadStream(name),
},(err,resp,body)=>{
..
})
解决方案
推荐阅读
- sql - SQL 获取执行脚本日期
- django-cms - Ckeditor“将 HTMLField 转换为占位符字段并将占位符配置为仅接受 TextPlugin”
- jenkins - 无法在 Jenkins 管道中存储文件
- html - 使用引导程序为响应式应用程序列出元素
- c# - 表单标签未加载到 iframe 内,它在 iframe 标记内被注释掉
- android - 打开时显示“在此区域显示”的应用程序
- r - 可变长度在具有 NA 值的回归循环中不同
- perl - 出子程序时散列的散列丢失
- kubernetes - 在 Ingress 上启用 IAP
- api - 如何在颤动中使用视频播放器显示视频