Отслеживайте прогресс загрузки изображений, используя multer, express и multer-s3 для NodeJS
Я пытаюсь загрузить изображения в AWS S3, используя multer-s3. Все работает нормально (то есть загрузка видео, изображений и файлов), но это не полностью. Я понятия не имею, как отслеживать прогресс или процент загрузки.
Мой код для Multer рассматривается как промежуточное программное обеспечение, как это
const multer = require('multer');
const AWS = require('aws-sdk');
const multerS3 = require('multer-s3');
var s3 = new AWS.S3();
const s3Storage = multerS3({
s3 : s3,
bucket : 'app-bucket',
acl : 'public-read',
key : function (req, file, callback) {
callback(null, file.originalname);
}
});
module.exports.s3Upload = multer({ storage: s3Storage });
Затем я прикреплю промежуточное ПО к моему маршруту следующим образом:
router.route('/image/upload').get(uploadController.getUploadImageController)
.post(middleware.s3Upload.single('myImage'),
uploadController.postUploadPhotoToAlbumController );
Затем на моем контроллере будет простой почтовый запрос, который сохранит путь к базе данных:
module.exports.postUploadPhotoToAlbumController = (req, res) => {
let query = Images.findById({ _id: req.params.id });
query.exec((err, images) => {
if(err){
return res.status(500).send({success: false, error: err, message: 'Something went wrong.'});
} if(!images){
return res.status(200).send({success: false, message: 'That image does not exist to your album.'});
}
images.image = !!req.file ? AwsS3PublicURL.setAwsPublicUrlSingle(req) : null;
images.save(err => {
if(err){
return res.status(500).send({success:false, error: err, message: 'Something went wrong.'});
}
req.flash('message', 'Your image was successfully uploaded.');
res.redirect('/album/photos');
});
});
}
AwsS3PublicURL.setAwsPublicUrlSingle - это путь к моему AmazonS3Bucket, установленному для public.
Моя проблема в том, что я не знаю, как правильно отслеживать прогресс или процент выполнения моей загрузки и отображения на веб-интерфейсе или в консоли. Заранее спасибо, если кто-нибудь знает ответ.