【问题标题】:Directly Download POST Response With Javascript使用 Javascript 直接下载 POST 响应
【发布时间】:2021-01-11 08:45:30
【问题描述】:

我有一个接受 POST 请求并返回任意大小的 zip 文件的服务。我想从网页向该服务发送 POST 请求并开始下载响应。

由于 zip 文件可能非常大,我需要立即启动下载以让浏览器开始写入磁盘。到目前为止,我看到的 javscript 解决方案将下载作为链接附加到文档中,然后在完成后通过单击链接来启动下载 - 这对我不起作用。

有没有办法在javascript中做到这一点?

【问题讨论】:

标签: javascript post download xmlhttprequest


【解决方案1】:

常见的做法如下:

  1. 从客户端发出发布请求,然后在服务器上使用随机 ID (UUID) 将请求存储在数据库中。
  2. 使用唯一链接 /download/[UUID] 的 URL 回复帖子
  3. 从客户端使用 window.open([唯一的 URL]) 这将立即从客户端浏览器中的新 URL 下载文件。
  4. 在服务器上使端点响应唯一的 URL,获取 UUID,使用 UUID 从 DB 中读取并使用文件进行响应,确保将 HTTP 标头设置为下载(这会强制客户端下载而不是比打开)。

为了安全起见,存储在数据库中的请求可以具有时间戳,如果 x 时间已过期,则 GET 端点可能会导致下载失败 - 下载后导致 URL 有缺陷。

【讨论】:

  • 出于多种原因(除了所需的额外工作),这是我试图避免的事情
猜你喜欢
  • 2023-02-08
  • 2019-07-22
  • 2020-08-12
  • 1970-01-01
  • 2020-08-11
  • 2016-08-31
  • 1970-01-01
  • 2018-06-05
  • 1970-01-01
相关资源
最近更新 更多