gpt4 book ai didi

javascript - 使用 Imagemagick 进行转换而不保存文件(在 Heroku 上)

转载 作者:行者123 更新时间:2023-12-03 04:49:45 29 4
gpt4 key购买 nike

目标:拥有一个 Node.js 服务器,它将从 PUT 调用中获取 pdf,并返回转换为 .jpg 的每个页面。当然,最终我并不关心它是如何完成的。

我已经成功创建了一个 Node.js 服务器,它使用 imagemagick 将 pdf 转换为图像。它是一个快速服务器,它使用这个 imagemagick npm 包,它包装了 imagemagick CLI。

这是该路线的代码,它在本地运行得很好

app.put('/v1/convert-pdf', (req, res) => {
res.status(202).send({ message: "we're working on it, alright?!" })

console.log("beginning image conversion")
im.convert(["-density", "144", "./content/pdf/foo.pdf", "./content/img/bar.jpg"], (err, stdout) => {
if (err) {
console.error(err)
} else {
console.log(stdout)
console.log("finished converting pdfs");
}

})
})

上面的路由输出了一堆名为 foo-0.jpg、foo-1.jpg 等的 .jpg 文件...现在我想做的是获取一个文件,将其放入路由中,然后将其转换通过 imagemagick,然后将其返回给用户(最终我会将其放入 S3 存储桶中,但只是小步骤)。

如果确实需要将文件保存到 Heroku 中的文件夹中,我该怎么做?我尝试从 Heroku 读取/写入,但没有收到错误(除非其中一个文件/目录不存在),但我也没有看到该文件。

最佳答案

在此处的评论中总结我们的对话,以防对任何人有帮助:

当您运行 heroku run bash 时,您将无法看到应用程序创建和保存的文件的原因是,它实际上启动了一个新的 dyno,并且没有访问运行应用程序的测功机的文件系统。

如前所述,执行此操作的最佳方法是在转换完成后立即将生成的图像上传到 S3 等,并通过 S3 处理任何传入请求以检索这些文件。

如果运行单个网络测功机,这现在不会成为问题,但如果您运行多个网络测功机,则转换后的文件将仅在接收并转换 PDF 的测功机上可用,因此其他测功机将无法使用可以访问它们。

此外,每次部署都会创建新的测功机,因此除非您将这些文件存储在 S3 之类的地方,否则一旦您向上推,它们就会丢失。

关于javascript - 使用 Imagemagick 进行转换而不保存文件(在 Heroku 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42709983/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com