Node.js 如何使用multer-s3转换图像?
我试图在上传到AmazonS3之前调整图像的大小。我已经找到了关于如何实现这一点的文档,但我怀疑我的实现是不正确的。我包括下面的代码。我做错了什么Node.js 如何使用multer-s3转换图像?,node.js,amazon-s3,multer,multer-s3,Node.js,Amazon S3,Multer,Multer S3,我试图在上传到AmazonS3之前调整图像的大小。我已经找到了关于如何实现这一点的文档,但我怀疑我的实现是不正确的。我包括下面的代码。我做错了什么 const multerFilter = (req, file, cb) => { if (file.mimetype.startsWith('image')) { cb(null, true); } else { cb(new AppError('Not an image! Please upload images o
const multerFilter = (req, file, cb) => {
if (file.mimetype.startsWith('image')) {
cb(null, true);
} else {
cb(new AppError('Not an image! Please upload images only.', 400), false);
}
};
const upload = multer({
storage: multerS3({
s3: s3,
acl: 'public-read',
bucket: 'BUCKETNAME',
contentType: multerS3.AUTO_CONTENT_TYPE,
}),
fileFilter: multerFilter,
shouldTransform: function (req, file, cb) {
cb(null, /^image/i.test(file.mimetype));
},
transforms: [
{
id: 'original',
key: function (req, file, cb) {
cb(null, 'image-original.jpg');
},
transform: function (req, file, cb) {
cb(null, sharp().resize(100, 100).jpg());
},
},
],
});
我能弄明白这一点。下面的代码使用npm的multer-s3-image-transform工作
const upload = multer({
storage: multerS3({
s3: s3,
acl: 'public-read',
bucket: 'BUCKETNAME',
contentType: multerS3.AUTO_CONTENT_TYPE,
transforms: () =>
sharp().resize(250, 250).jpeg({
progressive: true,
quality: 80,
}),
}),
fileFilter: multerFilter,
});
我能弄明白这一点。下面的代码使用npm的multer-s3-image-transform工作
const upload = multer({
storage: multerS3({
s3: s3,
acl: 'public-read',
bucket: 'BUCKETNAME',
contentType: multerS3.AUTO_CONTENT_TYPE,
transforms: () =>
sharp().resize(250, 250).jpeg({
progressive: true,
quality: 80,
}),
}),
fileFilter: multerFilter,
});