Загрузите несколько изображений на Amazon S3 с помощью Node.js

#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:

  1. Попробуйте загрузить один файл и проверьте, работают ли ваши req.файлы или нет. Я также столкнулся с этой ошибкой, когда загрузка нескольких файлов не работала. Итак, проверьте, работают ли req.файлы для загрузки одного файла.