Как сохранить поток октетов, полученный как ответ REST в файловую систему?

Пытаясь сохранить octet stream Ответ в формате JSON (содержащий данные файла в надлежащем формате), полученный с использованием Unirest client формат поврежден, и (правильное) программное обеспечение, используемое для открытия этого формата, не может открыть этот сохраненный файл. Data encoding mismatch ошибка получена.

То же самое прекрасно работает, когда вызов REST выполняется через приложение POSTMAN на основе nodejs chrome.

Любые подсказки или приводит к этому.

Ниже приведен код, используемый для получения потока октетов в nodejs:

urClient.get(url)
    .header('Authorization', '<token>')
    .header('Content-Type', 'application/json')
    .end(
        function(response) {
            log.info('+++++++++++++++'+response.code);
            //log.info('+++++++++++++++'+response);
            //log.info('+++++++++++++++'+response.body);
            //log.info('+++++++++++++++'+response.keys);
            fs.writeFile(`${destination}\\${fileName}.${fileExtension}`, response.data, function (error) {
                if (error) {
                    response = {
                        "error": error
                    };
                    res.statusCode = 400;
                    res.json(response); }
            });
        });

1 ответ

Решение

Вместо данных необходимо использовать поток для записи в файл.

Следующие работы:

fs.writeFile(`response.txt`, response.stream, function (error) {
  if (error) { console.error(error); }
});
Другие вопросы по тегам