无法查看我使用 aws-sdk 下载并使用节点写入磁盘的图像

cant view image that I downloaded using aws-sdk and wrote to disk using node

我正在使用 aws-sdk 节点从 s3 存储桶在我的快速服务器上下载图像(.png 文件),然后使用 fs.writeFileSync 将其写入磁盘。 问题是当我尝试在我的计算机上查看图像时,它说: is appears that we dont support this file format. 我检查了下载图像的属性及其 37.2 KB,这意味着返回了一些内容。

这不是下载图片的正确方法吗?

这是我的代码:

function downloadFile(fileKey) {
  const downloadParams = {
    Key: fileKey,
    Bucket: bucketName,
  };
  return s3.getObject(downloadParams).promise();
}


router.get("/getImage", async (req, res) => {
  try {
    let image= await downloadFile(`${req.query.imageID}.png`);
    fs.writeFileSync(`Images/${req.query.image}.png`, image);

    res.status(200).send();
  } catch (e) {
    console.log(e);
    res.status(500).send(e);
  }
});




在您的代码中,请确保您将正确的参数传递给 fs.writeFileAsync。正如我所看到的 plot 而不是 image.

其次,请确保直接从 s3 下载图像,并确保您可以在计算机上查看它,否则您必须在将图像上传到 s3 时添加 'Content-Type': 'image/png'

我的错误是我将完整的 s3 result 写入磁盘 (image) 而不是 result 中的 Body。 这是正确的代码:

 fs.writeFileSync(`Images/${req.query.taskID}-plot.png`, image.Body);