如何使用Express Server调整上传图像的大小

问题描述

我正在使用multer和multer-s3将图像上传到s3存储桶。

我想保持原始图像不变,但需要其他缩略图图像。 然后将它们都上传到s3。 我发现可以使用清晰的图像来调整图像大小,但不确定如何执行此特定任务。

任何人都可以建议如何做吗?

const aws = require('aws-sdk');
const multer = require('multer');
const multerS3 = require('multer-s3');

aws.config.update({
    secretAccessKey: process.env.AWSSecretKey,accessKeyId: process.env.AWSAccessKeyId,});

const s3 = new aws.S3();

const fileFilter = (req,file,cb) => {
    if (file.mimetype === "image/jpeg" || file.mimetype === "image/png") {
        cb(null,true);
    } else {
        cb(new Error("Invalid file type,only JPEG and PNG is allowed!"),false);
    }
};

const storage = multerS3({
    s3: s3,bucket: process.env.S3_Bucket_Name,acl: 'public-read',metadata: (req,cb) => {
        cb(null,{
            fieldName: file.fieldname
        });
    },key: (req,Date.now().toString())
    }

});

const upload = multer({
    fileFilter: fileFilter,storage: storage,});

module.exports = upload;

按以下方式进行路由

router.post('/post/add',checkAuth,upload.single("photo"),PostController.createPost);

解决方法

保存图像后,可以调整其大小。

您只需要将路径传递到图像即可。

请注意:您可以获取图像的宽度和高度,并检查图像是否需要调整大小。

    $(document).ready(function(){
    $('input').focusout(function(){
      if($(this).val().indexOf('@') > 0){
        $('.output').html('Invalid E-mail')
      }else if($(this).val().indexOf('@') > -1 &&
       $(this).val().indexOf('.') > -1){
        $('.output').html('Valid E-mail');
      }else{
          $('.output').html('Invalid E-mail')
        }
    });
,

尝试usage of sharpe module。根据需要更改路由处理程序

router.post(
  "/users/me/avatar",authMiddleware,upload.single("avatar"),async (req,res) => {
      const buffer = await sharpe(req.file.buffer)
        .png()
        .resize({
          width: 300,height: 300
        })
        .toBuffer();
      req.user.avatar = buffer;
      await req.user.save();
      res.send();
    },

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...