【问题标题】:How to download large video files with javascript xhr (in chrome)如何使用 javascript xhr(在 chrome 中)下载大型视频文件
【发布时间】:2013-01-22 17:33:15
【问题描述】:

由于一个不断崩溃的 chrome 标签 (http://code.google.com/p/chromium/issues/detail?id=138506) 的错误,无法通过 ajax 请求下载大文件 (>50-80 Mb)。

不幸的是,我不得不使用 Chrome,因为它是目前唯一实现 FileSystem API (http://www.w3.org/TR/file-system-api/) 的浏览器。

如何下​​载大型电影文件以在@​​987654323@ 中显示?

你有一些代码示例吗?

【问题讨论】:

  • 为什么不让浏览器这样做呢?将
  • 我能否以 blob 形式访问视频以将其保存在文件系统中。所以这在某种程度上类似于我保存图像的方式 (new Image ... img.src = "")。
  • 没有。如果您坚持在没有用户操作的情况下保存文件 - 因为通过用户操作,您可以再次让任何浏览器执行常规文件下载,如果网络服务器发送正确的 mime 类型(导致“另存为”对话框而不是浏览器尝试显示文件) - 如果允许这样做的浏览器有一个错误,那就是它 - 不起作用。如果您坚持测试 beta 功能/代码... :)
  • 是的,我需要以编程方式进行。

标签: javascript ajax google-chrome xmlhttprequest blob


【解决方案1】:

我已经成功编写了一个 javascript 块加载器的工作实现。 它依赖于一些返回块计数和块本身的服务器端代码。 客户端代码运行良好。

如果您想查看或有任何改进,请随时 fork、复制或分享: https://github.com/bux578/chunkload.js

【讨论】:

  • 我很好奇您是否有任何使用 chunkload.js 代码的在线示例?我陷入了同样的情况,使用 XHR 将一个巨大的视频传递给一些视频标签,Chrome 每次都会崩溃。如果你能解释一下如何设置你的代码,我将永远感激不尽。自述文件有点让我头疼。
  • 嗨@fanfare - 这个脚本严重依赖服务器端代码,该代码能够返回文件需要的块数和块本身。对于这种情况,我使用 Asp.NET Web API,这两种方法都在同一个控制器中 - 因此requestUrl 参数。两种方法都有methodNamesparamNames。所有这些都是为 XHR 请求构建 URL 所必需的。实例化 ChunkLoader 对象后,您调用 startDownload 方法。在 blob 下载并“重建”后调用您传递的回调。希望这可以澄清它。 :)
【解决方案2】:

根据您链接到的问题,这是达到了内存限制 - 您很可能会在任何内存有限的浏览器中遇到此限制。

Chrome 中的问题是 XHR 不会引发异常,因此无法捕获并解决该错误 - 因此似乎没有可用的修复程序,除非可能增加可用内存。

文件 API 在 Firefox、Chrome、Safari 和 Opera 中提供全面支持,在 IE10 中提供部分支持:

http://caniuse.com/fileapi

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多