У меня странная проблема с модулем Node.js (v0.4.12), над которым я работаю. Это модуль CouchDB, и хотя я уверен, что проблема не в CouchDB, я включу это, так как это может быть полезной информацией.
Короче, я пишу обертку для загрузки и выгрузки вложений с помощью CouchDB. Часть загрузки работает очень хорошо, а вот с частью загрузки у меня возникли трудности.
Мой тестовый процесс выглядит так:
http.request
, fs.createReadStream
)http.request
)fs. createWriteStream
, stream.pipe
)Это отлично работает с обычными текстовыми файлами, но бинарные файлы, такие как изображения, ведут себя иначе.
Как я уже говорил, загрузка проходит нормально. Я могу перейти по URL в CouchDB и просмотреть изображение. Когда я использую свой модуль для загрузки файла и его сохранения, выходной файл больше исходного (на 50-100%) и не может быть открыт ни одним редактором изображений. (следовательно, он каким-то образом "поврежден")
Я что-то упустил в Streams, когда речь идет о бинарных файлах? Я пробовал менять кодировку
с обеих сторон на "binary"
и "base64"
, но выходной файл все равно на 50% больше исходного. До того, как я обнаружил опцию кодировки, она была установлена на "utf8"
, и выходной файл был на 100% больше, так что это наводит меня на мысль, что где-то здесь проблема с кодировкой.
Я также попробовал вручную соединить потоки (а не использовать сам метод pipe
), но результат тот же.