При загрузке файлов с помощью multer
файлы будут храниться в папке загрузки сервера, в первую очередь это зависит от настроек вашего мультитера.
Если файл успешно загружен мультитером, вы получите следующие данные из req.file
.
{
fieldname: 'file',
originalname: 'sample.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: './uploads/',
filename: 'd1fccf5dc0125937f6fbe7a4dacfc069',
path: 'uploads/d1fccf5dc0125937f6fbe7a4dacfc069',
size: 23904
}
Значение path
, которое я буду использовать в приведенном ниже примере, не является каталогом.Multer изменит ваше имя файла без расширения.
Вам нужно будет прочитать этот загруженный файл как fileStream, а затем загрузить его на S3.
Например:
let path = req.file;
let fileStream = fs.createReadStream(file.path);
fileStream.on('error', function (err) {
if (err) { throw err; }
});
fileStream.on('open', function () {
s3.upload({
"Bucket": "yourBucketName",
"Key": file.originalname,
"Body": fileStream
}, function (err: any, data: any) {
if (err) {
console.log("Error uploading data: ", err);
} else {
console.log(data);
}
});
});
Надеюсь, это поможет вам.