#node.js #mean-stack #multer-s3
Вопрос:
Я пытаюсь загрузить изображения в amazon s3. Однако req.файлы все еще не определены. Я не понимаю, где мой код идет не так. Изображения отправляются с углового интерфейса. «artFileLocations» — это массив файлов в FormData. Как мне это исправить?
const router = require('express').Router()
const AWS = require('aws-sdk')
const multer = require('multer');
const multerS3 = require('multer-s3');
AWS.config.update({
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
});
var s3 = new AWS.S3();
// Unique name of aws s3 bucket created
const myBucket = 'nish.images';
// Multer upload (Use multer-s3 to save directly to AWS instead of locally)
var upload = multer({
storage: multerS3({
s3: s3,
bucket: myBucket,
// Set public read permissions
acl: 'public-read',
// Set key/ filename as original uploaded name
key: function (req, file, cb) {
cb(null, file.originalname)
}
})
})
router.post('/', upload.array('artFileLocations', 3), function(req, res) {
console.log('Reaching addPainting')
console.log(req.body, req.files)
});
module.exports = router;
Комментарии:
1. Можете ли вы отредактировать свой вопрос, чтобы включить угловой код, который отправляет файлы? Кроме того, что вы получаете, когда выполняете console.log
req.headers
?
Ответ №1:
Ваш код выглядит нормально.
но можете ли вы обновить свой HTML-файл следующим образом:
<input type="file" name="artFileLocations" multiple>
Если вы уже обновили свой HTML-файл, то я думаю, что вы не сталкиваетесь с какой-либо другой ошибкой.
Комментарии:
1. У меня это уже есть, это не проблема.
2. не могли бы вы вмешаться
console.log(file)
key function
и рассказать мнеlog
?
Ответ №2:
- Попробуйте загрузить один файл и проверьте, работают ли ваши req.файлы или нет. Я также столкнулся с этой ошибкой, когда загрузка нескольких файлов не работала. Итак, проверьте, работают ли req.файлы для загрузки одного файла.