当前位置: 首页 > 知识库问答 >
问题:

AWS 文件上传量超过 5mb - 节点

颜新
2023-03-14

我使用这个模块上传文件到亚马逊

https://www.npmjs.com/package/streaming-s3,如果文件小于或等于 5 MB,则工作正常。

我试着上传6 MB大小的PDF文件。它显示上传成功,但当我试图通过aws打开该文件。

它显示无法加载PDF文档

当我在Aws上检查大小时,显示为5MB。

我正在使用以下代码在 AWS 上上传

var options = {
        concurrentParts: 2,
        waitTime: 20000,
        retries: 2,
        maxPartSize: 10 * 1024 * 1024
    };
    //call stream function to upload the file to s3
    var uploader = new streamingS3(fileReadStream, config.aws.accessKey, config.aws.secretKey, awsHeader, options);
    //start uploading
    uploader.begin();// important if callback not provided.

    // handle these functions
    uploader.on('data', function (bytesRead) {
        console.log(bytesRead, ' bytes read.');
    });

    uploader.on('part', function (number) {
        console.log('Part ', number, ' uploaded.');
    });

    // All parts uploaded, but upload not yet acknowledged.
    uploader.on('uploaded', function (stats) {
        console.log('Upload stats: ', stats);
    });

    uploader.on('finished', function (response, stats) {
        console.log(response);
        logger.log('info', "UPLOAD ", response);
        cb(null, response);
    });

    uploader.on('error', function (err) {
        console.log('Upload error: ', err);
        logger.log('error', "UPLOAD Error: ", err);
        cb(err);
    });

这对于小于5 MB的文件工作正常。

有什么想法吗?我需要在AWS上进行任何设置吗?

谢啦

共有1个答案

钱浩荡
2023-03-14

这是通过多部分文件上传API将内容通过管道传输到S3的所需功能,即使在大小为GB的流上操作时,您也可以保持低内存使用率。此流通过将流按5 MB部分刷新到S3来避免高内存使用率,这样它一次只能存储5 MB的流数据

我们在这里面临的问题是下一部分没有加起来。

请参考此链接了解https://www.npmjs.com/package/s3-upload-stream的端到端详细信息

您还可以跟踪上载进度,以使用调试问题

/* Handle progress. Example details object:
   { ETag: '"f9ef956c83756a80ad62f54ae5e7d34b"',
     PartNumber: 5,
     receivedSize: 29671068,
     uploadedSize: 29671068 }
*/
upload.on('part', function (details) {
  console.log(details);
});

即使在完整的文件上传完成。

upload.on('uploaded', function (details) {
  console.log(details);
});
 类似资料:
  • 根据Amazon多部分上传文档,除最后一部分外,每个部分的大小必须至少为5MB。http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPart.html 问题是我如何通过多部分上传api将小于5MB的文件上传到AWS S3存储桶。我问这个问题的原因是,我想在上传到S3时对所有文件使用多部分上传API

  • 有没有办法,如何上传比5MB更小的文件?多部分上传要求块的大小大于5MB(不包括最后一个)。但是我正在处理32KB的块。 有没有一种方法可以上传较小的块,或者让我保存我的块,直到它们达到5MB大小,然后使用多部分上传? 感谢解答!

  • 我想从hadoop上传一些文件到AWS bucket。我有AWS访问密钥、保密密钥和S3导入路径。 我无法通过AWS CLI命令访问。我在aws凭证文件中设置了密钥。我尝试执行“aws s3 ls ”,但得到的错误是 由于上面的代码不起作用,我尝试使用distcp命令,如下所示。 对于上面的命令,我也得到下面的错误。 18/11/09 00:55:40信息http.AmazonHttpClient

  • 问题内容: 我正在使用节点v0.10.26并表示v4.2.0,而我对节点还很新。在过去三个多小时的时间里,我一直在想着要在节点上使用文件上传表单,这是我的头。在这一点上,我只是试图让req.files不返回未定义。我的观点看起来像这样 这是我的路线 这是我的app.js 我看到了其中包含的内容,应该可以提供帮助,但是如果添加这些行,我什至无法启动服务器。 问题答案: ExpressJS问题: 大多

  • 问题内容: 选择图像,doc或pdf后,我想将它们通过okhttp3。如何进行此操作? 并在okhttp 3中 显示的错误是 谢谢。 问题答案: 所以我自己回答这个问题。 因此,我首先将输出流打开到一个临时文件。 扩展名取决于mime类型。您可以通过以下方式找到mime类型 现在从文件读取并将其内容写入临时文件 现在写入文件 最后 成功之后的最后