ПОЛУЧИТЬ буфер канала REST в ответ

#node.js #rest #file #pipe #buffer

#node.js #rest #файл #канал #буфер

Вопрос:

Я пытаюсь отправить файл через конечную точку GET. Мой файл извлекается из другого ресурса, который отвечает буфером.

Как я могу, получив буфер, передать его в ответ или во что мне нужно его преобразовать, чтобы иметь возможность передавать его?

То, что я пробовал до сих пор, было следующим:

 const fetch = require('node-fetch');
const stream = require('stream');

const fileBuffer = await fetch(fileDownloadURL, {});
const fileSize = Buffer.byteLength(fileBuffer);
const bufferStream = new stream.PassThrough();
​
bufferStream.end(fileBuffer);
bufferStream
    .pipe(res)
    .on('error', error => next(error));
​
res.set({
    'Access-Control-Expose-Headers': '*, Content-disposition, Content-Length',
    'Content-Type': 'document',
    'Content-Length': fileSize,
    'Access-Control-Allow-Headers': 'Content-disposition, Content-Length',
    'Content-disposition': `attachment;filename=${filename}`
});

 

Мой ответ был простым двоичным (я тестирую запросы с помощью insomnia). Поскольку insomnia имеет функцию визуального отображения содержимого, я ожидал, что он покажет файл. Файл будет иметь тип .docx .

Комментарии:

1. Не могли бы вы отредактировать вопрос и добавить, какую библиотеку вы используете для запроса?

2. Расширение docx с «типом Mime» (Content-Type) application/vnd.openxmlformats-officedocument.wordprocessingml.document , хотя я не уверен, связано ли это с причиной вашей ошибки