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

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

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));

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

1 ответ

Решение

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

Другие вопросы по тегам