Node.js fs.readFile()是否可以作为PHP的file_get_contents()工作?

时间:2016-12-13 13:24:07

标签: php node.js fs

我有以下脚本读取并打印图像为字符串:

PHP:

<?php
echo file_get_contents("/path/to/small.png");

Node.js的:

var fs = require('fs')
var file = fs.readFileSync('/path/to/small.png', 'utf8');
console.log(file)

但是2个脚本输出的字符串之间有一点点区别。我使用以下Go代码尝试了同样的事情,输出与PHP&#39; s相同:

package main

import (
    "fmt"
    "io/ioutil"
)

func main() {
    buf, err := ioutil.ReadFile("/path/to/small.png")
    if err != nil {
        panic(err)
    }

    content := string(buf)
    fmt.Println(content)
}

所以,任何人都知道为什么fs.readFile()表现不同?

2 个答案:

答案 0 :(得分:2)

var fs = require('fs')
var file = fs.readFileSync('/path/to/small.png', 'binary');
console.log(file)

的引用:

https://nodejs.org/dist/latest-v7.x/docs/api/fs.html#fs_fs_readfilesync_file_options

https://github.com/nodejs/node/blob/master/lib/buffer.js#L432

答案 1 :(得分:1)

Garbage in, garbage out。如果你告诉Node你的二进制图片文件是一个编码为UTF-8的纯文本文件,那么难怪你会得到意想不到的结果。

另一方面,您的PHP代码只打印读取的确切字节。