【问题标题】:Multipart upload to Amazon S3 using Javascript in Browser在浏览器中使用 Javascript 分段上传到 Amazon S3
【发布时间】:2017-12-13 14:05:04
【问题描述】:

我正在开展一个项目,该项目需要我使用 javascript 将大文件直接从浏览器上传到 Amazon S3。

有人知道怎么做吗?是否有支持此功能的 Amazon Javascript SDK?

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    试试 EvaporateJS。它拥有庞大的社区和广泛的浏览器支持。 https://github.com/TTLabs/EvaporateJS.

    【讨论】:

      【解决方案2】:

      使用aws-sdk-js直接从浏览器上传到s3。在我的情况下,文件大小可以达到 100Gb。我用的是分段上传,非常好用。

      我必须在私有存储桶中上传,我使用WebIdentityCredentials 进行身份验证。您还可以选择使用CognitoIdentityCredentials

      【讨论】:

        【解决方案3】:

        如果您可以在服务器端添加逻辑,您可以将预签名的 S3 上传 URL 返回到浏览器,并将文件直接上传到 S3。

        This answer 有类似的代码,但使用的是 AWS SDK v2。

        Javascript 示例 (source):

        const { S3, PutObjectCommand } = require("@aws-sdk/client-s3");
        const { getSignedUrl } = require("@aws-sdk/s3-request-presigner");
        ...
            const credentials = {
              accessKeyId: "KEY", // UPDATE THIS
              secretAccessKey: "SECRET", // UPDATE THIS
            };
            const options = {
              credentials,
              region: "REGION", // UPDATE THIS
              apiVersion: "2006-03-01", // if you want to fix the api version, optional
            };
            const s3Client = new S3(options);
            // Create the command
            const command = new PutObjectCommand({
              Bucket: 'BUCKET', // UPDATE THIS
              Key: 'OBJ_ID_ON_S3', // UPDATE THIS
            });
            // Create the presigned URL
            const signedUrl = await getSignedUrl(s3Client, command, {
              expiresIn: 60 * 2, // This makes the URL expires after 2 min
            });
        
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-09-06
          • 2010-11-17
          • 2015-06-25
          • 1970-01-01
          • 2016-03-24
          • 1970-01-01
          • 2017-08-23
          • 2014-10-14
          相关资源
          最近更新 更多