Работает ли Node.js fs.readFile () как file_get_contents () в PHP?

У меня есть следующие сценарии, которые читают и печатают изображение в виде строки:

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)

Но есть небольшая разница между строками, выводимыми двумя сценариями. Я попробовал то же самое со следующим кодом Go, и результаты идентичны PHP:

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 () ведет себя по-другому?

1

Решение

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

2

Другие решения

Мусор, мусор из. Если вы скажете Node, что ваш двоичный файл изображения представляет собой простой текстовый файл в кодировке UTF-8, неудивительно, что вы получите неожиданные результаты.

С другой стороны, ваш код PHP просто печатает точные прочитанные байты.

1

По вопросам рекламы [email protected]