egg上传图片如果转buffer格式

发布于 2022-09-11 16:36:52 字数 299 浏览 14 评论 0

从前端上传一张图片,在后端,得到临时路径如下:

/var/folders/5y/3cm_1kws4r18wmx5n2l9ntzm0000gn/T/egg-multipart-tmp/multipart-file-mode-example/2018/10/29/14/5eb8f5b7-a1d5-4b6a-9cf0-4fcc80bab4f0.png

我希望将此图片传入sharp中做压缩等处理,但是此路径传入sharp,报错:输入文件有损坏的头,所以是否可以将此临时路径转为buffer格式传入?如果可行,如果将此路径转化为buffer格式?望赐教。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一袭白衣梦中忆 2022-09-18 16:36:52

前端传上来的stream转换成buffer,然后用这个buffer实例化一个sharp对象,做一系列操作后toFile(目标路径)保存服务端。
stream转buffer 用下面这个函数

const streamToBuffer = stream => {
  return new Promise((resolve, reject) => {
    const buffers = [];
    stream.on('error', reject);
    stream.on('data', data => buffers.push(data));
    stream.on('end', () => resolve(Buffer.concat(buffers)));
  });
};

然后 调用并实例化sharp 如:

// stream 转成 buffers
const buf = await streamToBuffer(stream);
// 初始化sharp对象
const originImg = sharp(buf);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文