首页 > 解决方案 > 使用 Node - Express - Multer - AWS 在上传时压缩图像

问题描述

我正在尝试找到减小图像大小以节省加载速度的解决方案。

我有一个用于 imageupload 的中间件,其工作原理如下:

const multer = require('multer');
const aws = require('aws-sdk');
const multerS3 = require('multer-s3');
aws.config.update({
    secretAccessKey: XXXXX,
    secretKeyId: XXXXXX,
    region: XXXXX
});

const s3 = new aws.S3();

const MIME_TYPE_MAP = {
    'image/png': 'png',
    'image/jpeg': 'jpeg',
    'image/jpg': 'jpg'
};

const fileUpload = multer({
    limits: 500000,
    storage: multerS3({
        s3: s3,
        bucket: XXXXX,
        acl: 'public-read',
        metadata: function(req, file, cb) {
            cb(null, { fieldName: file.fieldname });
        },
        key: function(req, file, cb) {
            cb(null, Date.now().toString());
        }
    }),
    fileFilter: (req, file, cb) => {
        const isValid = !!MIME_TYPE_MAP[file.mimetype];
        let error = isValid ? null : new Error('Invalid mime type !');
        cb(error, isValid);
    }
});

module.exports = fileUpload;

这个中间件在我的路由器中被调用如下:

router.post('/new', fileUpload.single('image'), controller.function);

关于上传,一切都很好,但它是以全尺寸发送的,我可以看到很快就会导致问题......

你能帮我么 ?

大家加油,

标签: node.jsamazon-web-servicesexpressamazon-s3multer

解决方案


推荐阅读