我正在尝试将图像上传到Amazon S3。 我拥有的代码可以成功处理小尺寸(大约30KB)的图像,但是任何大于该尺寸的图像似乎都无法接收所有字节,因此form.parse函数不会执行,并且图像也不会上传到S3。
我已经在Google上搜索了解决方案,但找不到与我的问题类似的东西!
var formidable = require('formidable');
var fs = require('fs');
var s3 = new AWS.S3({apiVersion: '2006-03-01', params: {Bucket: '[my-bucket-name]'}});
var form = new formidable.IncomingForm();
form.maxFileSize = 500 * 1024 * 1024;
form.on('progress', function(bytesReceived, bytesExpected){
console.log("received = " + bytesReceived);
console.log("expected = " + bytesExpected);
});
form.on('error', function(err) {
console.log(err);
});
form.parse(req, function (err, fields, files) {
console.log("test");
var playerID = fields.PlayerID;
console.log("ID = " + playerID);
var uploadfilepath = files.playerpic.path;
console.log('File Location: ' + uploadfilepath);
fs.readFile(uploadfilepath, function(err, file_buffer){
if (err) { console.log(err); }
//Set parameters for uploading to S3
var paramsS3 = {
Bucket: '[my-bucket-name]',
Key: playerID + "_" + n.toString(),
Body: file_buffer
};
//Upload image to S3
s3.upload(paramsS3, function(err, data){
if (err) { return console.log(err); }
console.log("We updated the bucket with this: " + JSON.stringify(data));
});
});
});
这些是当图像不上传到S3时我收到的一组典型结果,但是我无法弄清楚为什么未接收到所有字节。
已接收= 1081
预期= 200507
已收到= 17081
预期= 200507
如果有人可以在这里帮助我,告诉我我哪里出问题了,将不胜感激! 谢谢