如何在 nodejs 中使用 fs 模块将图像写入特定目录?

Posted

技术标签:

【中文标题】如何在 nodejs 中使用 fs 模块将图像写入特定目录?【英文标题】:How do I write image to a specific directory with fs module in nodejs? 【发布时间】:2021-09-15 14:25:17 【问题描述】:

这是我当前的代码:

await createCollage(pfparray, collageWidth).then((imageBuffer) => 
        pfpcollage = new MessageAttachment(imageBuffer, 'collage.png');
        fs.writeFile(`./images/$params.msg.author.id.png`, imageBuffer, () => console.log('image downloaded'));
        ).catch(e => params.msg.channel.send(embed: title: "Could not generate collage",description: e + " | error!")); 
             

所以在运行时,它应该将图像文件保存在目录“images”中,并以作者的 id 作为名称。但是它控制台日志但实际上并没有在目录中保存任何内容。当我尝试保存到任何特定目录时会发生这种情况。当我只是尝试在没有任何目录的情况下保存“$params.msg.author.id.png”时,它会正确地将其保存在同一目录中。可能是什么问题?

【问题讨论】:

你是在windows平台还是mac/linux平台上运行这个? @h-sifat 我在 Docker 上运行它,所以我认为是 linux 首先导入路径模块,然后在 writeFile 中尝试路径参数: path.join(__dirname, "image", "your image name") @h-sifat 嘿,有人向我推荐了类似的东西。你是对的,路径没有被解决。谢谢! 【参考方案1】:

正如@h-sifat 向我展示的那样,路径似乎没有得到解决。我导入了路径模块(Typescript [TS1259] 在这里遇到错误),我不得不这样做

从“路径”导入 * 作为路径

之后,我将代码更新为:

fs.writeFile(path.resolve(__dirname,`./images/$params.msg.author.id.png`), imageBuffer, () => console.log('image downloaded'));

这似乎成功了!

【讨论】:

似乎您正在使用打字稿,因此您可以将导入行编写为:从“路径”导入路径。因为路径是默认导出,您不需要使用“* as”关键字。你可以给任何你想要的名字,例如,import bla_bla_bla from "path"。 @h-sifat 是的,我确实这样做了,但我遇到了错误 TS1259,一个关于它的 github 问题告诉我使用 import * as path from 'path'

以上是关于如何在 nodejs 中使用 fs 模块将图像写入特定目录?的主要内容,如果未能解决你的问题,请参考以下文章

nodejs模块——fs模块 使用fs.write读文件

如何将文件写入 NodeJS 中的特定目录?

nodejs模块——fs模块 WriteFile写入文件

nodejs

nodeJs文件系统(fs)与流(stream)

nodejs_fs模块相关练习1