Я пытаюсь получить PDF-файл, хранящийся в Azure Хранилище BLOB-объектов, через внутренний серверный узел, а затем передать этот файл PDF в интерфейс React. Я использую Microsoft @azure/storage-blob
с BlockBlobClient, но каждый пример, который я нахожу онлайн, преобразует readableStreamBody
в строку. BLOB-объект имеет тип содержимого application/pdf
. Я пытался передать readableStreamBody
и чистый вывод во внешний интерфейс, но это привело к поломке PDF-файлов. Я также следил за документацией онлайн, сделал ее строкой и передал ее внешнему интерфейсу. Это дало PDF-файл, который открывался и содержал надлежащее количество страниц, но был совершенно пустым.
Node.js Код на внутренней стороне
app.get('/api/file/:company/:file', (req, res) => {
const containerClient = blobServiceClient.getContainerClient(req.params.company);
const blockBlobClient = containerClient.getBlockBlobClient(req.params.file);
blockBlobClient.download(0)
.then(blob => streamToString(blob.readableStreamBody))
.then(response => res.send(response))
});
Код передней части
getFileBlob = (company,file) => {
axios(`/api/file/${company}/${file}`, { method: 'GET', responseType: 'blob'})
.then(response => {
const file = new Blob(
[response.data],
{type: 'application/pdf'});
const fileURL = URL.createObjectURL(file);
window.open(fileURL);
})
.catch(error => {
console.log(error);
});
}