Проблема с загрузкой изображений Открывает узел/express/multer для AWS. Консоль сообщает мне, что есть несколько загрузок одного и того же изображения, и полученный файл на AWS усечен и сломан. Я взял всю клиентскую сторону ajax и просто использую стандартную загрузку формы. Экспресс 3.2.5. Спасибо за любые идеи.узел multer AWS одиночный файл многократная загрузка
Выход консоли:
in FileUploadData
in FileUploadData
in s3.put
Successfully uploaded data to myBucket/myKey atest.jpg
in s3.put
Successfully uploaded data to myBucket/myKey atest.jpg
in FileUploadData
in FileUploadData
in s3.put
Successfully uploaded data to myBucket/myKey atest.jpg
in FileUploadData
in s3.put
Successfully uploaded data to myBucket/myKey atest.jpg
in FileUploadData
in no req.files
in s3.put
Successfully uploaded data to myBucket/myKey atest.jpg
in s3.put
Successfully uploaded data to myBucket/myKey atest.jpg
Это не соответствует, но всегда несколько триггеров FileUploadData. Код узла, вырезанный и вставленный из потока stackoverflow.
app.use(multer({
limits : { fileSize:100000 },
rename: function (fieldname, filename) {
return filename.replace(/\W+/g, '-').toLowerCase();
},
onFileUploadData: function (file, data, req, res) {
// file : { fieldname, originalname, name, encoding, mimetype, path, extension, size, truncated, buffer }
console.log("in FileUploadData");
var params = {
Bucket: 'your20images',
Key: file.name,
Body: data,
ContentType: 'image/jpeg'
};
s3.putObject(params, function (perr, pres) {
console.log("in s3.put");
if (perr) {
console.log("Error uploading data: ", perr);
} else {
console.log("Successfully uploaded data to myBucket/myKey "+file.name);
}
});
}
}));
Клиентская форма
<form method="post" enctype="multipart/form-data" action="/upload" id="upform">
<input type="file" name="imgupload"><br /><br /><input type="submit">
</form>
--------------------- редактировать ---------- ------------------
Несколько протоколов консоли объяснены в принятом ниже ответе. Предварительное решение, которое я нашел, отправляется в AWS в onFileUploadComplete. Подозреваю, что есть лучший способ, но если кто-то добирается до этого, он работал для меня.
onFileUploadComplete: function (file, data, req, res) {
console.log("complete");
fs.readFile(data.files.imgupload[0].path, function(err, data){
if(err) { console.log("image rename error: "+err) }
var params = {
Bucket: 'myBucket',
Key: file.name,
Body: data,
ContentType: 'image/jpeg'
};
s3.putObject(params, function (err, res) {
if (err) {
console.log("Error uploading data: ", err);
} else {
console.log("Successfully uploaded data to myBucket/myKey");
}
});
});
}
Спасибо, что имеет смысл. Так что я догадываюсь, что происходит, когда куски переписывают друг друга на AWS. Попытка поставить загрузку в onFileUploadComplete, но пока не удается. Будет отмечен как ответ после загрузки. – openquestions