gpt4 book ai didi

javascript - 使用 multer-s3-transform 保留原始文件

转载 作者:行者123 更新时间:2023-12-01 15:42:11 30 4
gpt4 key购买 nike

如果我要上传图像,除了创建缩略图之外,我还希望 multer s3 保留原件。

换句话说。我只想在第一次转换中更改文件名。

下面的代码运行良好,但问题是 sharp() 修改了原始代码。假设我上传了一个 gif 文件,动画将停止工作。

我试图从原始变换对象中删除变换箭头函数,但这会使代码崩溃,并出现错误 dest.on is not a function。

我试过删除整个变换对象,但由于 shouldTransform 是真实的,它根本不会上传原件。

我试图替换 sharp()null ,但这给了我这个错误无法读取null的属性'on'。

根据文档,我应该能够在 sharp() 位置输入一个字符串,但这也会使代码崩溃。
示例:cb(null, "something.jpeg");错误:dest.on 不是函数

关于 multer-s3-transform 的文档有点欠缺,所以我现在只是暴力破解。

const awsStorage = multerS3({
s3,
bucket: process.env.AWS_BUCKET_NAME,
shouldTransform: (transformReq, file, cb) => {
cb(null, /^image/i.test(file.mimetype));
},
key: (transformReq, file, cb) => {
const splitFileName = file.originalname.split('.');
const fileEnding = splitFileName[splitFileName.length - 1];
cb(null, `files/${dateNow}.${fileEnding}`);
},
transforms: [
{
id: 'original',
key: (transformReq, file, cb) => {
const splitFileName = file.originalname.split('.');
const fileEnding = splitFileName[splitFileName.length - 1];
cb(null, `files/${dateNow}.${fileEnding}`);
},
transform: (transformReq, file, cb) => {
cb(null, sharp()); // This is where I'm struggling
},
},
{
id: 'thumbnail',
key: (transformReq, file, cb) => {
const splitFileName = file.originalname.split('.');
const fileEnding = splitFileName[splitFileName.length - 1];
cb(null, `thumbnails/${dateNow}.${fileEnding}`);
},
transform: (transformReq, file, cb) => {
cb(
null,
sharp()
.resize(200, 200)
.png()
);
},
},
],
});

最佳答案

您可以从第一个变换对象(原始)中删除变换 block 吗?

transform: (transformReq, file, cb) => {
cb(null, sharp()); // This is where I'm struggling
}
如果您只是想重命名文件,那么关键部分就足够了。您在下面的缩略图上正确使用了Sharp。

关于javascript - 使用 multer-s3-transform 保留原始文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60743640/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com