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