amazon-web-services - S3 - 使用 getSignedUrl 链接上传的视频无法播放并且以错误的格式下载
问题描述
我在服务器端使用带有 Node.JS 的 AWS SDK,并且在从客户端将文件作为 formData 上传时遇到问题。
在服务器端,我有简单的路由,它创建上传链接,稍后将直接从客户端上传视频。
我正在使用 S3 getSignedUrl 方法生成与 putObject 的链接,它为客户端创建 PUT 请求,但会导致 formData 出现非常奇怪的问题。
作为 formData 上传的视频行为不正确 - 而不是播放它 S3 上传的 url 下载了该视频并且它也被破坏了。
这是我在服务器端配置该方法的简单方法:
this.s3.getSignedUrl(
'putObject',
{
Bucket: '<BUCKET_NAME>',
ContentType: `${contentType}` -> video/mp4 as a rule,
Key: key,
},
(err, url) => {
if (err) {
reject(err)
} else {
resolve(url)
}
},
)
axios put request with blob 实际上是有效的,但不适用于 formData。
axios.put(url, file, {
headers: {
'Content-Type': file.type,
},
onUploadProgress: ({ total, loaded }) => {
setProgress((loaded / total) * 100)
},
})
这是工作版本,但是当我尝试将文件添加到 formData 时,它被上传到 S3,但视频下载而不是播放。
我在 AWS 方面没有丰富的经验,所以如果有人知道如何处理这个问题,我将不胜感激
解决方案
推荐阅读
- javascript - 寻找活动模型序列化器,如 Sequelize 的嵌套关联输出
- haskell - 在haskell中处理无效状态
- android - 如何在 Flutter 中查看实时可处理的图像?
- react-native - 如何在抽屉导航器中添加箭头返回按钮以在打开抽屉时关闭抽屉
- python - 当“运行时断开”时,Google-Colab 是否继续运行脚本?
- certificate - 将二进制私钥转换为 pem 格式
- python-3.x - 如何将样式应用于烧瓶中生成的 html 页面
- c++ - 是否可以使用 `std::copy` 将值从可变大小的数组复制到容器?
- runtime-error - 如何解决运行时错误:TypeError:无法读取未定义的属性“准备好”?
- javascript - 为什么我的承诺会返回 [object] 或 [array] 的数组