2015-10-05 53 views
2
的NodeJS

我使用这个模块上传文件到AmazonAWS上传文件超过5MB -

https://www.npmjs.com/package/streaming-s3,这是工作的罚款,如果文件大于5 MB小于或等于。

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

它示出失败当我在AWS检查大小它显示5 MB加载PDF文档

我使用下面的代码在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上做的任何设置?

感谢

+0

你在控制台中得到了什么?你为什么改变maxPartSize? – Mircea

+0

上传数据:{downloadSpeed:5242880000, uploadSpeed:66365570, downloadTime:1, uploadTime:79, 大小:5242880} 没有错误 –

+0

你看到完成的消息? – Mircea

回答

0

这是需要的功能用于输送通过多文件上传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); 
}); 
+0

你想让我使用s3-upload-stream这个模块吗? –

+0

尝试使用它,我用它在过去,这是非常有前途的 – Nishant

+0

似乎不适合我 –