如何解决浏览器blob下载从最大内存?

问题描述 投票:0回答:1

我正在尝试使用post请求下载大文件(3gigs)到我的后台。帖子请求的目的是为了隐藏文件系统,防止网页抓取。似乎有些下载最初是加载到内存中的,因为文件最初并没有开始下载,但我的内存峰值,然后30秒后它开始下载,稍微降低了内存使用量。这是我正在使用的代码。

fetch("http://localhost:5000/api/send", {
  method: "POST",
  headers: {
  "Content-Type": "application/json"
  },
  body: JSON.stringify({ "root": root, "path": path, "name": name })
})
.then(response => response.blob())
.then(blob => {
  var url = window.URL.createObjectURL(blob)
  var a = document.createElement("a")
  a.href = url
  a.download = name
  document.body.appendChild(a)
  a.click()
  a.remove()
})

有什么办法可以在不影响ram性能的情况下实现这个功能吗?以GET请求的方式下载文件,然后使用类似于 window.location.href = url 的工作没有问题,但我希望不要使用,并且在URL参数中用"& "这样的符号指定文件名有困难。

任何想法都是感激的

javascript http web browser download
1个回答
1
投票

你的服务器响应的是一个blob,所以它被下载到RAM中,然后在客户端被称为对象url。

你看客户端真正需要的是一个url。你不必从一个blob创建它。相反,你可以在服务器端创建一个哈希的url,比如 "bit.lywhatever",用这个url响应,然后客户端代码做同样的事情。

© www.soinside.com 2019 - 2024. All rights reserved.