如何将流 responseType 传递给我的客户端?

Posted

技术标签:

【中文标题】如何将流 responseType 传递给我的客户端?【英文标题】:How to pass a stream responseType to my client? 【发布时间】:2021-12-18 04:23:47 【问题描述】:

我正在尝试从我的 express js 应用下载文件:

const response = await Axios(
    method: 'GET',
    url: url,
    responseType: 'stream'
  )

但是,与其在之后这样做:

response.data.pipe(Fs.createWriteStream(path))

我想将响应发送给我的 js 客户端,该客户端使用 ajax 请求我的 express js 应用程序,以便文件将直接从我的浏览器(客户端)而不是服务器端下载。

有什么办法吗?

【问题讨论】:

看看服务器发送的事件这可能满足你的要求----->SSE 【参考方案1】:

您可以将快速响应对象传递给管道方法

response.data.pipe(res);

【讨论】:

在我的客户端中得到一个非常长的字符串,例如UEsDBAoAAAANNKSeeUUAAAAAAAAAAAAAYYYAJABAAc3ltcGhvbnkvVVgMAAjQdFQU0HRU9Q... 。我试图做new Blob([result]) etc.,但后来我得到一个损坏的文件。有什么建议吗? ` 看起来像 base64 编码的数据(对于一个 zip 文件)

以上是关于如何将流 responseType 传递给我的客户端?的主要内容,如果未能解决你的问题,请参考以下文章

如何将空值传递给 WebAPI 中的可空类型

如何在活动和片段之间传递对象

如何将传递给我的 bash 脚本的所有参数传递给我的函数? [复制]

如何将值的“数组”传递给我的存储过程?

将类类型传递给泛型

Objective-C - 将流数据传递到音频队列