Я пытаюсь загрузить изображение через модуль запроса npm и сохранить его с помощью fs.writeFile
, однако файл поврежден при сохранении на диске, что проверено с помощью imagemagick identify
команда.
const fs = require('fs');
const path = require('path');
const request = require('request');
const brandLogoUrl = 'https://example.net/logo.png';
const filename = path.basename(brandLogoUrl);
const brandLogoPath = `./${filename}`;
request(brandLogoUrl, (error, rsp, body) => {
fs.writeFile(brandLogoPath, body, 'binary', (err) => {
console.log('brand logo saved');
});
});
});
Когда я проверяю сохраненный файл с помощью identify
, результат:
определить: неправильный заголовок изображения `logo.png '@
ошибка / png.c / ReadPNGImage / 3940.
Однако, если я скачаю тот же URL-адрес с помощью wget
и проверим его с помощью identify
, результат будет
logo.png PNG 283x109 283x109 + 0 + 0 8-битный sRGB 19KB 0.000u 0: 00.000
JS кажется довольно простым, но, похоже, я что-то упускаю. Вы можете это заметить?
EDIT
Я попробовал модуль https (на основе этого поста ), и он работает
var fs = require('fs');
var https = require('https');
//Node.js Function to save image from External URL.
var url = 'https://example.net/logo.png';
var file = fs.createWriteStream('./logo.png');
https.get(url, function(response) {
response.pipe(file);
});