为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕尼黑5688855 2022-12-29 10:39:08
我试图弄清楚文件上传和处理在 Node.js 中是如何工作的,我不确定 multer 在这件事上的责任是什么。multer 的唯一目的是向请求对象添加正文对象和文件对象吗?编辑和保存文件到文件系统应该由不同的包来完成吗?虽然我可以看到我可以设置 multer 以自动将文件保存在文件对象中,但似乎选项非常有限并且图像处理超出了 multer 的范围。这是否意味着我需要另一个专门处理图像处理的包?该包是否会从文件对象中获取文件流缓冲区并将其放入实际文件中,然后对其应用所有更改?
查看完整描述

1 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

multer只是一个中间件,用于处理来自带有multipart/form-data标头的请求的数据,你不能用它进行图像处理,尽管很少有像multer-sharpmulter-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 文章


查看完整回答
反对 回复 2022-12-29
  • 1 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号