锐利的图像旋转仅一次

时间:2019-05-11 14:30:40

标签: javascript node.js fs sharp

我已经制作了一个功能,可以在Node.js的Express服务器上将图像旋转90度。 它在第一次调用时有效,但在第二次调用时无效。如果我重新启动服务器,则它将再次工作一次,因此,如果我重新启动服务器3次,则可以一直旋转图像。

Product.findById是一个猫鼬查询,用于查找前端请求中指定的图像ID的图像名称。

在第一次和第二次尝试中,第7行的console.log返回正确的工厂路径/名称,并且不会引发任何错误。 响应状态也是200次“图像已旋转”


router.patch("/rotate/:image", (req, res, next) => {
  let image = ""
  Product.findById(req.params.image)
  .exec()
  .then(result => {
    image = './uploads/resized/'+result.image
    console.log("image", image)

    sharp(image)
    .rotate(90)
    .withMetadata()
    .toBuffer(function(err, buffer) {
      if(err) throw err
      fs.writeFile(image, buffer, function() {
        res.status(200).json("image rotated")
      });
    })
  })
  .catch(err => {res.status(400).json("invalid img id")
    console.log(err)})
  })

期望的输出是在每个http请求上将图像旋转90度,但实际输出仅是在第一个http请求上将图像旋转90度。

1 个答案:

答案 0 :(得分:1)

在导入sharp模块之后,尝试禁用以下行的缓存写入:

sharp.cache(false);