问题标签 [bloburls]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
22450 浏览

javascript - 带有angularjs的Internet Explorer中的Blob url

鉴于此代码(来自其他人):

小提琴示例可以很好地在 chrome 中下载。但是点击“下载”链接在 IE11 中没有任何作用。没有错误,没有警告,根本没有响应。

但据此,在 IE10 和 11 中受支持。

是否有一些 IE 安全设​​置需要更改或发生了什么?

0 投票
3 回答
1887 浏览

javascript - 是否可以使用客户端生成的 blob url 保存到 Google Drive

我正在生成一个 CSV 客户端并将其放入 Blob,然后创建一个对象 URL。

我试图完成的是生成这个 blob URL,然后将文件保存到 Google Drive。我在这个例子中使用了保存到驱动器按钮,但它似乎甚至没有加载保存按钮,除非我去掉“blob:http:”,在这种情况下它会看起来正确加载按钮,但这不是一个有效的文件了。

这甚至可以将 blob 文件保存到 Google Drive 吗?

这是我的代码的样子:

谢谢!

0 投票
0 回答
77 浏览

javascript - 在 JavaScript 中将任何字符串转换为 Base64

我希望将文件的内容作为字符串(任何文件类型),并仅使用 JavaScript 将该字符串转换为 Base64 字符串,以便在 blob url 中输出。在许多情况下 btoa() 不起作用,显然是因为它不接受不是 8 位的信息。我需要能够将任何字符串转换为 Base64 字符串。如果这是可能的,有人可以提供解决方案吗?

0 投票
2 回答
2470 浏览

javascript - 如何使用 IndexedDB 制作一个非常长的字符串而不会使浏览器崩溃?

我正在编写一个 Web 应用程序,它会生成一个可能很大的文本文件,用户将下载该文件,并且所有处理都在浏览器中完成。到目前为止,我能够以小块读取超过 1 GB 的文件,处理每个块,逐步生成大输出文件,并将不断增长的输出存储在 IndexedDB 中。我更天真的尝试将所有结果保存在内存中,然后在最后将它们序列化到一个文件中,这导致所有浏览器崩溃。

我的问题有两个:

  1. 我可以在不先将整个内容读入内存的情况下附加到 IndexedDB 中的条目(字符串或数组)吗?现在,这个:

    在输出开始变大后导致崩溃。我可以只将一堆小条目写入数据库,但无论如何我必须稍后将它们全部读入内存以连接它们。请参阅我的问题的第 2 部分...

  2. 我可以创建一个数据对象 URL 来引用 IndexedDB 中的一个值而不将该值加载到内存中吗?对于小字符串,我可以这样做:

    但是对于大字符串,这并不太好。事实上,它在加载字符串之前就崩溃了。似乎使用get()IndexedDB 的大读取至少会导致 Chrome 崩溃(甚至开发人员工具也会崩溃)。

如果我使用 Blob 而不是字符串会更快吗?这种转换便宜吗?

基本上我需要一种方法,使用 JavaScript,将一个非常大的文件写入磁盘,而无需在任何时候将整个文件加载到内存中。我知道您可以提供createObjectURL一个文件,但这在我的情况下不起作用,因为我正在从用户提供的文件中生成一个新文件。

0 投票
3 回答
2355 浏览

javascript - 带有 Blob URL 的 404 的 XMLHttpRequest 状态

我正在尝试将 getUserMedia 生成的 blob URL 上传到服务器。 其他人想做同样的事情,这个问题已经得到解答。

我对 XHR 请求使用与回答该问题的人相同的代码,但我得到了 404。我做了一个小提琴,当您查看控制台时也会发生同样的事情。我的网站上也有一个活生生的例子,同样的事情也会发生。

这是需要一些 TLC 的代码:

其他人似乎都能做到这一点,因为这已经讨论过了。

展品 A

展品 B

我正在使用 ChromeOS,41.0.2252.2 开发。到底发生了什么,为什么我不能得到 blob?

0 投票
1 回答
631 浏览

javascript - 如何在严格模式下将附件下载为二进制数据?

我正在使用以下函数在 Office 365 应用程序中下载附件文件,作为二进制数据:

它在 Chrome 浏览器中成功运行,但是当我通过 Outlook 桌面客户端打开它时出现以下错误:

错误类型错误:在严格模式下不允许分配给只读属性

执行此行时发生错误:

此实施是否有任何替代解决方案?

0 投票
5 回答
455014 浏览

html5-video - 什么是 blob URL,为什么使用它?

我在使用 blob URL 时遇到了很多问题。

我在 YouTube 上搜索src视频标签,发现视频src如下:

我打开了src视频中的 blob URL,它给出了错误。我无法打开链接,但它正在使用src标签。这怎么可能?

要求:

  • 什么是 blob URL?
  • 为什么使用它?
  • 我可以在服务器上创建自己的 blob URL 吗?
  • 如果您有任何其他详细信息
0 投票
1 回答
18353 浏览

javascript - Windows Edge 并打开一个 blob url

尝试在 Windows Edge(20.10240.16384,这是 Microsoft 提供的 IE11 VM 中的版本)中打开带有 blob url 的新窗口时,我得到了一些奇怪的结果。

在线上

我收到“访问被拒绝”错误,看起来与 CORS 相关,这有点道理,因为它在技术上不是同一个域。但是 BLOB url 在技术上没有域?

这是 Edge 中的错误吗?还是我做的事情不太对?此代码适用于 IE、Chrome 等。

0 投票
8 回答
145269 浏览

javascript - 如何将 .xlsx 数据作为 blob 保存到文件

我对这个问题有类似的问题(Javascript:Exporting large text/csv file crashs Google Chrome):

我正在尝试保存由excelbuilder.jsEB.createFile()函数创建的数据。如果我将文件数据作为href链接的属性值,它就可以工作。但是,当数据很大时,它会使 Chrome 浏览器崩溃。代码是这样的:

我使用 excelbuilder.js 创建数据的代码如下:

正如类似问题(Javascript:导出大文本/csv 文件使 Google Chrome 崩溃)的答案所建议的那样,需要创建一个 blob。

我的问题是,文件中保存的不是 Excel 可以打开的有效 Excel 文件。我用来保存的代码blob是这样的:

如果我将[data]上述代码中的替换为[Base64.decode(data)],保存的文件中的内容看起来更像是预期的 excel 数据,但仍然无法被 Excel 打开。

谢谢!

0 投票
0 回答
313 浏览

javascript - 如何使用 OAuth 在 javascript 中下载大文件而不将整个文件存储在浏览器中?

我有一个闭源 SaaS Web 应用程序,我的用户需要 OAuth 才能访问一些数据。大部分可用数据都是二进制的,如果用户可以下载文件,而不是在浏览器中做所有事情,处理起来会容易得多。

我可以编写 javascript 并将其部署在 webapp 中,因此我可以触发 OAuth 身份验证并将所需的Authorization令牌标头添加到数据请求中。

除了 HTTP 标头之外,不可能以任何其他方式(例如,查询参数)发送授权,因此我无法使用 URL 制作简单的 HTML 锚标记以允许用户将数据下载为文件。

我相信我可以使用Blob URL来启用此数据的下载,并回退到旧浏览器的数据 URL

两个问题:

  1. 有没有更简单的方法可以让我的用户将数据下载为文件,但仍然注入 HTTP 标头?

  2. 我可以流式传输数据,因此我不需要 100MB 的数据 URL 吗?