小编Man*_*uel的帖子

如果从索引访问,IndexedDB 无法正确获取 Blob(WebKitBlobResource 1. 错误)

我有完整的代码,你可以在最后复制,这样你就可以检查这个问题。

特尔;博士: 我使用的是 Safari 13.1,并且在将 Blob 存储在 IndexedDB 中之后。如果我关闭浏览器,我只能直接通过对象存储访问这些 Blob,而不能通过该对象存储的某些索引访问。如何使用索引正确恢复 Blob?

可能是我做错了什么,但这似乎在谷歌浏览器中没有任何问题。我在 IndexedDB 对象存储中存储了一个 Blob。我的意图是稍后获取它,并使用 URL.createObjectURL(blob) 使 blob 的内容可下载。

如果我存储 Blob 并且没有关闭选项卡,我会尝试恢复它并创建一个 URL,它可以正常工作,并且 URL 可以工作。我取回 Blob 的方式无关紧要(直接或通过索引)。在示例中,我只有一个 Blob。如果我这样做objectStore.index('index1').getAll('foo')objectStore.getAll()它有效。

但是如果我重新启动 Safari 并再次打开网页,现在我只能直接从 objectStore ( objectStore.getAll()) 中获取 Blob 。但是,如果我尝试从索引 (objectStore.index('idx').getAll(key) ) 中则 Blob 不起作用。我正确获取了所有对象,其余信息存储在对象存储中,但 Blob 不起作用,如果我创建一个 URL,我会得到一个 WebKitBlobResource 1. 错误。

这是一些示例代码。

如果数据库不存在,它会使用对象存储和索引创建它,并在其中存储一个 Blob。有两个按钮可以从该 blob 生成 URL,它们都可以正常工作。如果重新启动 Safari,则只有其中一个有效(直接获取 Blob 的那个),另一个使用索引从数据库中获取的 URL 返回不起作用的 URL。

<!DOCTYPE html>
<html>
<head>
  <title>Bug retrieving blobs from database</title>
</head>
<body>

<button id="clear-btn">Clear</button>
<button …
Run Code Online (Sandbox Code Playgroud)

javascript safari blob indexeddb

5
推荐指数
0
解决办法
190
查看次数

将方法.equalsOr()添加到String类

我刚开始使用Java.

我想知道是否有办法添加一个方法,以便任何String都可以调用该方法,类似于我们现在string1.equals(string2)可以使用的方法string1.equalsOr(string2, string3, string4, string5).

我知道我可以创建自己的静态方法,但想知道我是否可以将其用于任何字符串.

java string

4
推荐指数
1
解决办法
106
查看次数

标签 统计

blob ×1

indexeddb ×1

java ×1

javascript ×1

safari ×1

string ×1