首页 > 解决方案 > 不确定为什么上传到 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 时可能出错的地方?

谢谢大家的帮助。

标签: amazon-web-servicesamazon-s3

解决方案


上传文件时不能指定 URL。您需要 2 次获取:

  • 第一个从下载视频video.uri
  • 第二个将视频上传到 S3:body: blob

要将文件下载为 blob,请使用response.blob()。然后你可以用它来上传文件(这里是一个例子)。


推荐阅读