Загрузить файл на S3 с Multer-S3 - PullRequest
1 голос
/ 26 января 2020

Я пытаюсь загрузить файл из NodeJS в мою корзину S3. Следующий код работает нормально.

. / Маршруты / уроки. js

 const upload = require('../models/model.lessons');

 router.post('/upload9', upload.array('file', 1), (req, res) => {
        console.log('Uploaded');
        res.send({image: req.file});
    });

. / Models / model.lessons. js

    const upload = multer({
    storage: multerS3({
        acl: 'public-read',
        s3,
        bucket: config.get('AWS.bucket_audios'),
        key: function (req, file, cb) {
            req.file = Date.now() + file.originalname;
            cb(null, Date.now() + file.originalname);
        }
    })
})

Моя проблема в том, что я хочу сделать дополнительные действия до и после загрузки. Когда я пытаюсь переместить массив upload.array в код model.lessons. js, я получаю сообщение об ошибке. Что я делаю неправильно ?

. / Маршруты / уроки. js

router.post('/upload', async function (req, res, next) {
try {
    let result = await Lessons.upload2(req, res);
    console.log('uploaded');
    await res.send(result);
} catch (err) {
    console.log(err);
    res.status(400).json(err);
}

});

. / Models / model.lessons. js

   upload2: async function (req, res) {

    // some code 

    var result = await multer({
        storage: multerS3({
            acl: 'public-read',
            s3,
            bucket: config.get('AWS.bucket_audios'),
            key: function (req, file, cb) {
                req.file = Date.now() + file.originalname;
                cb(null, Date.now() + file.originalname);
            }
        })
    }).array('file', 1);

    // some code 

    return true;

},
...