我正在使用此模块将文件上传到亚马逊
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上进行任何设置吗?
由于
答案 0 :(得分:0)
这是通过多部分文件上传API将内容管道传输到S3所需的功能,即使在大小为GB的流上操作,也可以保持较低的内存使用率。这个流通过将流刷新到3 MB的部分来避免高内存使用,这样它一次只能存储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);
});