#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
, хотя я не уверен, связано ли это с причиной вашей ошибки