如何在不保存服务器的情况下将文件从外部API发送到客户端?

时间:2019-04-06 23:42:04

标签: javascript express fs

我正在尝试使用外部API生成PDF,然后将该PDF返回给客户端而不将其保存到服务器。我知道我需要使用fs.createReadStream或管道,但是我不知道如何实现它。尽管我很高兴使用任何可行的方法,但我在后端使用Express,在前端使用axios。它仅适用于Chrome,因为它是内部工具。

PDF返回并使用CURL正确保存,但是使用JS API时不知何故不能保存服务器端(理想情况下它不必保存,但是只要到达客户端就没有关系了)。我尝试了pipe和readStream和writeStream的一些变体,以及仅从API调用返回.pipe(res),但我可以在客户端下载空白的PDF,但它没有数据。

这是前端的代码:

parent::toArray()

和后端:

  .then((response)=>{
    console.log('done', response)
    const url = window.URL.createObjectURL(new Blob([response.data]));
    const link = document.createElement('a');
    link.href = url;
    link.setAttribute('download', 'file.pdf');
    document.body.appendChild(link);
    link.click();
   })

理想情况下,我想使用API​​创建PDF,然后将PDF返回给客户端(或将PDF传递给Google云端硬盘)而不保存在服务器上。

0 个答案:

没有答案