amazon-web-services - 不确定为什么上传到 S3 的视频是 0 位
问题描述
在尝试将视频上传到 AWS 几天后,我已经成功(几乎)能够做到。我看到的主要问题是当我前往我的 S3 存储桶时,该文件有一个Size 0 B
. 我希望看看我可能做错了什么导致这种情况发生。
在后端,我得到一个 presignedUrl,例如:
const s3 = new AWS.S3({
accessKeyId: ACCESSKEY_ID,
secretAccessKey: SECRETKEY
});
const s3Params = {
Bucket: BUCKET_NAME,
Key: uuidv4() + '.mov',
Expires: 60 * 10,
ContentType: 'mov',
ACL: 'public-read'
};
let url = await s3.getSignedUrl('putObject', s3Params);
return { url };
一旦我有上传的网址。在前端,我发送文件的方式是:
const uploadFileToS3 = async (uri) => {
const type = video.uri.split('.').pop();
const respo = await fetch(uri, {
method: 'PUT',
body: {
url: video.uri,
type,
name: 'testing'
},
headers: {
'Content-Type': type,
'x-amz-acl': 'public-read'
}
});
const some = await JSON.stringify(respo);
它似乎确实在保存一些东西,因为我在存储桶中看到它,但无法下载或查看它。只显示一个空白页面,感觉就像没有(视频)可能被上传到 S3。任何指向我在将视频上传到 S3 时可能出错的地方?
谢谢大家的帮助。
解决方案
上传文件时不能指定 URL。您需要 2 次获取:
- 第一个从下载视频
video.uri
- 第二个将视频上传到 S3:
body: blob
要将文件下载为 blob,请使用response.blob()。然后你可以用它来上传文件(这里是一个例子)。
推荐阅读
- python - 本地文件和(本地)docker之间的PyCharm同步
- c++ - 在什么情况下我需要考虑字节顺序?
- reactjs - Netflix 忽略自动播放/静音浏览器政策的方式?
- internationalization - 如何使图像的标题在 Wagtail 中可翻译
- spring-boot - Dockerizing Spring Boot 应用程序获取权限被拒绝
- javascript - NVM 未安装在 Ubuntu 21.04 终端上
- javascript - 错误:“路径”参数必须是字符串类型。收到未定义。firebase deploy --only 功能
- sql - 如何有效地为“ALL”运算符索引 PostgreSQL 数组列?
- kubernetes - 是否有可能用 MicroK8S 获得公共 ip
- lodash - 如何通过 url 访问 lodash 模板