我有完整的代码,你可以在最后复制,这样你就可以检查这个问题。
特尔;博士: 我使用的是 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) 我刚开始使用Java.
我想知道是否有办法添加一个方法,以便任何String都可以调用该方法,类似于我们现在string1.equals(string2)可以使用的方法string1.equalsOr(string2, string3, string4, string5).
我知道我可以创建自己的静态方法,但想知道我是否可以将其用于任何字符串.