angularjs - AWS文件上传超过5mb-nodejs

标签 angularjs node.js amazon-web-services amazon-s3

我正在使用此模块将文件上传到亚马逊

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

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

显示无法加载 PDF 文档

当我在 AWS 上检查大小时,它显示 5 MB。

我正在使用以下代码在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 上进行任何设置吗?

谢谢

最佳答案

这是通过分段文件上传 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);
});

关于angularjs - AWS文件上传超过5mb-nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32941723/

相关文章:

javascript - Angular ui-router 中的绝对名称

javascript - 在服务器端 express 应用程序中使用 i18n-node

javascript - Dynamodb错误: Scan Results don't filter to HASH even though I put in an Actual entry ID

javascript - 在 Controller 上注入(inject) ui-router 解析结果

javascript - 如何将 javascript/angular.js 游戏板连接到 firebase 数据库

javascript - 尝试使用 Google Assistant 应用连接到服务器

javascript - 未捕获的类型错误 : fs. createWriteStream 不是函数

php - 从 S3 存储桶中删除大量对象会卡住。为什么?

c# - Entity Framework 不更新 Amazon RDS SQL 数据库

javascript - 有没有办法使用 Angular 文件保护程序下载任何类型的文件?