Я пытаюсь загрузить файл MP4 удаленно с помощью HTTP GET-запроса. Когда HTTP GET-ответ загружается в файл, файл записывается отлично (~ 3 МБ).Node.js - createWriteStream пишет другой файл, чем writeFile
request.get('http://url.tld/video.mp4').pipe(fs.createWriteStream('video.mp4'))
Однако, когда HTTP GET тело ответа записывается функцией fs.writeFileSync
, он создает файл большего размера (~ 7 МБ), и она не может быть выполнена, так как он поврежден.
request.get('http://url.tld/video.mp4', function(err, res, body){
fs.writeFileSync('./video.mp4', body)
});
Почему это происходит? Использует ли функция pipe правильную кодировку для соответствующего файла?
Похоже, проблема заключается в типе тела ответа. Это строка вместо буфера. – Avi
Да. Но я не мог понять, если не отладить обратный путь. Легче доказывать противоречие, а не читать всю библиотеку 'request' :) – user3151330