【问题标题】:Read and echo image file Node.js读取并回显图像文件 Node.js
【发布时间】:2021-11-28 02:24:54
【问题描述】:

我有一个名为 small.png 的小 png 文件。我希望以下 Node.js 代码等效于文件的 cat。但是,我显然读错了,因为结果不同,并且将输出重定向到新文件会导致某些内容甚至无法识别为 PNG。

node -e 'console.log(require("fs").readFileSync("static/small.png", "utf8").toString())'

或者,展开:

const fs = require("fs");
console.log(fs.readFileSync("static/small.png").toString());

我怀疑这可能是编码问题,但“utf16le”似乎不像原来的那样。

【问题讨论】:

  • 调试技巧也值得赞赏。
  • 图像的“猫”是什么意思?你想在你的shell中打印无法识别的字符吗?

标签: javascript node.js file


【解决方案1】:

不能将二进制文件复制为 utf8 字符串,除非它恰好是 utf8 字符串。

fs.createReadStream默认不编码,可以通过管道传送到节点进程的stdout。

const stream = require("fs").createReadStream("small.png")
stream.pipe(process.stdout)
% cat small.png | sha256sum
065453ee61387cec8383a2337c488a3f65e709f52637efd5f97c1efe6c333f2b  -

% node -e 'st = require("fs").createReadStream("small.png"); st.pipe(process.stdout)' | sha256sum
065453ee61387cec8383a2337c488a3f65e709f52637efd5f97c1efe6c333f2b  -

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    相关资源
    最近更新 更多