我是使用node.js进行服务器端编程的新手。我现在正在将一个小小的webapp与它结合在一起并且让通常的初学者学习。以下代码 WORKS 。但我很想知道它是否或多或少是从表单上传文件并将其投入aws s3的正确方法:
app.router.post('/form', { stream: true }, function () {
var req = this.req,
res = this.res,
form = new formidable.IncomingForm();
form
.parse(req, function(err, fields, files) {
console.log('Parsed file upload' + err);
if (err) {
res.end('error: Upload failed: ' + err);
} else {
var img = fs.readFileSync(files.image.path);
var data = {
Bucket: 'le-bucket',
Key: files.image.name,
Body: img
};
s3.client.putObject(data, function() {
console.log("Successfully uploaded data to myBucket/myKey");
});
res.end('success: Uploaded file(s)');
}
});
});
注意:我必须在union / flatiron.plugins.http中关闭缓冲区。
我想学习的是,何时流加载文件以及何时同步加载文件。它将是一个非常小的webapp,流量很小。
如果它或多或少好,那么请将此视为工作代码的标记,我也会将其放入一个要点。找到这种东西的文档和工作示例并不容易。我很喜欢熨斗。但是它的小模块方法会导致网络上出现大量的文档和示例,单独讲授教程。
答案 0 :(得分:0)
你应该使用除强大之外的其他模块,因为据我所知,强大的没有s3存储选项,你必须在上传之前将文件保存在服务器中。 我建议你使用:multiparty
使用此example直接上传到S3,而不在服务器中本地保存。