2017-02-10 38 views
0

Почему загруженный образ искажен?Почему загруженный образ искажен?

import * as fs from 'fs'; 
import * as request from 'request-promise-native'; 

const download = async (url) => { 
    console.log(`Downloading ${url}`); 
    const options = { 
    url, 
    resolveWithFullResponse: true, 
    }; 
    const response = await request.get(options); 
    console.dir(response.headers); 
    return fs.writeFileSync('image.jpg', response.body); 
}; 


const main = async() => { 
    try { 
    await download('https://dz2cdn1.dzone.com/storage/rc-covers/3339976-refcard-cover141.png'); 
    } catch (e) { 
    console.error(e); 
    } 
}; 

main().then(() => console.log('success')).catch((e) => console.log(e)); 

Полученное изображение искажено и не может быть открыто. Любые идеи о том, что вызывает проблему и как ее исправить?

+0

Возможный дубликат [Получение двоичного содержимого в Node.js с использованием запроса] (http://stackoverflow.com/questions/14855015/getting-binary-content-in-node-js-using-request) – GilZ

ответ

1

По умолчанию request рассматривает ответ как текст utf-8. Если вы хотите сохранить ответ как двоичный (в частности, как один Buffer), вам нужно явно указать encoding: null в ваших request() опциях.

+0

Спасибо! Это исправило это! – Kiril