在AWS S3存储桶上载大文件

时间:2017-04-20 12:26:59

标签: node.js file-upload amazon-s3 multer multer-s3

我正尝试通过我的有角度的网络应用程序将大文件(PDF,视频)上传到AWS s3 bucket。我使用ng-file-upload将文件上传到我的节点服务器,在节点上我正在使用multer-s3 npm包。

对于小文件,它按预期工作得很好。但我无法使用上传大文件。它也没有给我任何错误。它只是没有上传文件(如果它很大),甚至没有进入回调并且超时。有没有办法处理上传大文件到s3 Bucket?

var uploadSingle = upload.single('uploadFile');

router.post('/uploadVideo',function(req,res,next){  
    uploadSingle(req,res,function(err){
                // doesn't come here if the file is large
            if(err){
                //Error Response , Error while uploading Module PDF;
            }
            else{
                //handling file upload
               // success response
            }
    });
}

如果有人能帮我解决这个问题,我非常感激。如果您知道其他库可以帮助我在AWS s3存储桶上传大文件,请建议。

1 个答案:

答案 0 :(得分:0)

您可以使用分段上传API 在S3中上传大文件(最大5 TB)。

来自documentation

分段上传API旨在改善上传体验 用于较大的物体。您可以分段上传对象。这些对象 零件可以独立,以任何顺序并行上传。 您可以将分段上传用于大小从5 MB到5 TB的对象。 有关更多信息,请参见使用分段上传来上传对象。 API。

如果您使用的是SDK

/* The following example initiates a multipart upload. */

 var params = {
  Bucket: "examplebucket", 
  Key: "largeobject"
 };
 s3.createMultipartUpload(params, function(err, data) {
   if (err) console.log(err, err.stack); // an error occurred
   else     console.log(data);           // successful response
   /*
   data = {
    Bucket: "examplebucket", 
    Key: "largeobject", 
    UploadId: "ibZBv_75gd9r8lH_gqXatLdxMVpAlj6ZQjEs.OwyF3953YdwbcQnMA2BLGn8Lx12fQNICtMw5KyteFeHw.Sjng--"
   }
   */
 });