Совет: утюг, грозный и aws s3
Я новичок в серверном программировании с помощью node.js. Прямо сейчас я склеиваю с ним крошечное веб-приложение и учусь на обычном стартапе. Следующий кусок кода работает. Но я хотел бы знать, является ли это более или менее правильным способом сделать простую загрузку файла из формы и добавить его в 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.
То, что я хотел бы узнать, когда потоковая загрузка файла и когда синхронизировать его. Это будет действительно крошечное веб-приложение с небольшим трафиком.
Если это более или менее хорошо, то, пожалуйста, рассмотрите это как знак рабочего кода, который я также приведу к сути. Не так просто найти документацию и рабочие примеры такого рода вещей. Мне очень нравится Flatiron. Но это небольшой модульный подход приводит к большому количеству разбросанных документов и примеров по всей сети, не говоря уже о учебниках.
1 ответ
Вы должны использовать другой модуль, кроме грозного, потому что, насколько я знаю, у грозного нет опции хранения в s3, тогда вы должны сохранить файлы на своем сервере перед загрузкой. Я бы порекомендовал вам использовать: многопартийность
Используйте этот пример для загрузки непосредственно на S3, не сохраняя его локально на вашем сервере.