如何在单个上传操作中将大小超过5mb的file upload到AWS

function uploadGuideMedia(req, res, next) { if (!req.file && !req.body.id) { return res.status(401).send({ status: 401, data: "Upload a file with 'file' key" }); } db.query('SELECT * from guide_media where _id = $1', [req.body.id], function(err, guide) { if (err) return next(err); if (guide.rows.length == 0) { return res.status(404).send({ status: 404, data: "Guide_media not found" }) } else { let name = req.file.path + path.extname(req.file.originalname); fs.renameSync(req.file.path, name); req.file.path = name; var s3bucket = new AWS.S3({ params: { Bucket: 'mapery-v2' } }); fs.readFile(req.file.path, function(err, lq_file) { s3bucket.createBucket(function() { var params = { Key: 'upload-v2/' + req.file.originalname, Body: lq_file, ContentType: req.file.mimetype, ACL: 'public-read' }; s3bucket.upload(params, function(err, aws_images) { fs.unlink(req.file.path, function(err) { db.query('UPDATE guide_media SET image_path = $1 WHERE _id = $2 RETURNING *', [aws_images.Location, req.body.id], function(err, guide_res) { if (err) return next(err); return res.status(200).send({ status: 'success', data: guide_res.rows }); }); }); }) }) }) } }); } 

我正在尝试将videofile upload到AWS,但是当文件大小大于5mb时,它将作为一个部分上传(5mb的2部分和10mb的3部分)。 但是在这个https://aws.amazon.com/s3/faqs/#How_much_data_can_I_store里,他们说我们可以上传最多5GB的单一上传操作。 我错了吗?

上传部分并不意味着你的文件将被存储在S3上的多个部分。 如果有效负载足够大,则SDK将同时上传多个部分的文件,以便在其中一个失败的情况下可以重新上传部分上传的文件。 默认情况下,SDK使用5MB的partSize。 您可以使用以下代码将partSize设置为10 MB。

 var params = {Bucket: 'bucket', Key: 'key', Body: stream}; var options = {partSize: 10 * 1024 * 1024, queueSize: 1}; s3.upload(params, options, function(err, data) { console.log(err, data); }); 

编辑:链接到上载方法的文档。 http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property