Amazon web services 不确定为什么上传到S3的视频为0位

Amazon web services 不确定为什么上传到S3的视频为0位,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,在尝试将视频上传到AWS的几天后,我已经成功(几乎)做到了。我看到的主要问题是,当我转到我的S3存储桶时,文件的大小为0b。我希望看到我可能做错了什么导致了这种情况的发生 在后端,我得到一个预签名,例如: const s3 = new AWS.S3({ accessKeyId: ACCESSKEY_ID, secretAccessKey: SECRETKEY }); const s3Params = { Bucket: BUCKET_NAME, Key: uui

在尝试将视频上传到AWS的几天后,我已经成功(几乎)做到了。我看到的主要问题是,当我转到我的S3存储桶时,文件的大小为0b。我希望看到我可能做错了什么导致了这种情况的发生

在后端,我得到一个预签名,例如:

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 };
一旦我有了上传的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);
它看起来确实在保存一些东西,因为我在bucket中看到它,但无法下载或查看它。只是显示了一个空页面,感觉好像什么都没有(视频)可能被上传到S3。在将视频上传到S3时,是否有任何指向我可能出错的地方的指针


谢谢您的帮助。

上传文件时,您不能指定URL。您需要2次回迁:

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

要将文件作为blob下载,请使用。然后您可以使用它来上传文件()。

当您下载它时,它实际上是零字节还是JSON?您似乎并没有将内容发送到任何地方,只发送JSON。也许您的案例也需要这样做?要同时添加这两个对象,
body
不能是JavaScript对象。它必须是字符串、博客或其他受支持的格式之一。这可能就是为什么你的身体最终是空的。不管是哪种方式,就像Marcin说的那样,你应该从文件中读取数据并将其放入主体中,而不是JavaScript对象中。@Marcin这实际上是我需要做的。非常感谢你给我这个。在我取出它并转换成一个水滴后,我可以看到它的大小,也可以从桶中观看视频。@没问题。如果你不介意的话,我会提供一个答案供将来参考。