multer 的唯一目的是向请求对象添加正文对象和文件对象吗?编辑和保存应该由不同的包来完成吗?

我试图弄清楚文件上传和处理在 Node.js 中是如何工作的,我不确定 multer 在这件事上的责任是什么。multer 的唯一目的是向请求对象添加正文对象和文件对象吗?编辑和保存文件到文件系统应该由不同的包来完成吗?

虽然我可以看到我可以设置 multer 以自动将文件保存在文件对象中,但似乎选项非常有限并且图像处理超出了 multer 的范围。这是否意味着我需要另一个专门处理图像处理的包?

该包是否会从文件对象中获取文件流缓冲区并将其放入实际文件中,然后对其应用所有更改?


慕尼黑5688855
浏览 129回答 1
1回答

尚方宝剑之说

multer只是一个中间件,用于处理来自带有multipart/form-data标头的请求的数据,你不能用它进行图像处理,尽管很少有像multer-sharp或multer-sharp-s3这样的将图像处理库与 multer 集成的包(用于上传到S3 桶)。multer 的唯一目的是向请求对象添加正文对象和文件对象吗?那,还有你想存储文件的地方(多存储)这是否意味着我需要另一个专门处理图像处理的包?是的,单靠 multer 不能做我上面提到的任何图像处理。你可以用sharp之类的东西来做图像处理。该包是否会从文件对象中获取文件流缓冲区并将其放入实际文件中,然后对其应用所有更改?是的,例如使用sharp库:router.post('/upload',upload.single('image') ,async (req, res) => {   const { filename: image } = req.file    await sharp(req.file.path)    .resize(500)    .jpeg({quality: 50})    .toFile(        path.resolve(req.file.destination,'resized',image)    )    fs.unlinkSync(req.file.path)    return res.send('SUCCESS!')})示例取自这篇 dev.to 文章
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript