Ошибка Multer-s3-transform при загрузке не файла изображения - PullRequest
0 голосов
/ 04 июля 2019

Я хочу преобразовать файл изображения в намного меньший размер перед загрузкой в ​​корзину s3, и я решил использовать multer-s3-transform. Моя проблема в том, что я должен иметь возможность загружать не файлы изображений, такие как pdf, docs и т. Д., Но я продолжаю получать сообщение об ошибке. вот мой код.

"use strict";

const config = require('../../config/config');
const _ = require('lodash');
const AWS = require('../../library/aws-sdk');
const multer = require('multer');
const multerS3 = require('multer-s3-transform');
const uuid = require('../../library/uuid');
const sharp = require('sharp');

const s3 = new AWS.S3();
const multerS3Obj = multerS3({
    s3 : s3,
    bucket : config.amazon.s3.bucketName,
    acl : "public-read",
    contentType : multerS3.AUTO_CONTENT_TYPE,
    metadata : function(req, file, cb) {
        const metadataObj = Object.assign({}, req.body);

        metadataObj.content_type = file.mimetype;
        metadataObj.filename = file.originalname;

        cb(null, metadataObj);
    },
    shouldTransform : function(req, file, cb) {
        cb(null, /^image/i.test(file.mimetype));
    },
    transforms : [
        {
            key : function(req, file, cb) {
                const refType = req.params.refType,
                        refId = req.params.refId,
                        subfolder = `uploads/${refType}/${refId}/`;
                cb(null, subfolder + file.originalname);
            },
            transform : function(req, file, cb) {
                let quality = '';
                if (file.mimetype === 'image/jpeg') {
                    quality = sharp().jpeg({quality : 20});
                }
                else if (file.mimetype === 'image/png') {
                    quality = sharp().png({quality : 20});
                }
                cb(null, quality);
            }
        }
    ]
});

const multerOpt = {
    storage : multerS3Obj,
    limits : {
        fileSize : 15728640
    },
    fileFilter : (req, file, cb) => {
        cb(null, true);
    }
};

module.exports = multer(multerOpt);

Я действительно думаю, что сначала мне нужно проверить тип файла, но я не знаю, как это сделать.

...