【问题标题】:IndexedDB Save range asIndexedDB 将范围另存为
【发布时间】:2013-12-18 22:25:58
【问题描述】:

好的,所以我是 IndexedDB 的新手,对 Javascript 没有特别的经验。现在,我有代码工作,使用户可以浏览到他们的文件系统上的文件,并且在选中时,文件被分解为块(通过使用切片),这些块被转换为Hex字符串,以及字符串(连同一个键)存储在 IndexedDB 中。

这种模式的好处是用户可以选择一个非常大的文件,而且由于我使用了正确的结构,整个文件不必一次全部加载到内存中。

现在我正在尝试读取这些十六进制字符串,并在用户单击按钮时让浏览器弹出“另存为”对话框。问题是我还没有设法将 IndexedDB 中的数据“流式传输”到另存为输入中。你们中有人知道这样做的方法吗?我的结局很差。

谢谢

【问题讨论】:

  • 我不认为你可以流式传输它。我可以很容易地找到一种方法来组合数据并保存它,但是流式传输:除非你愿意上传到服务器然后流式传输(这完全违背了这一点),我认为没有办法跨度>
  • 对。我已经考虑了这两种情况,并且我担心如果文件太大,将所有十六进制(或 base64 或 blob 或其他)连接在一起可能会引发内存异常。 FileReader 切片操作设置了我,以便我可以一次处理一个文件块...我真的希望有一个可行的文件输出选项。
  • 另外,如果它那么大,您可能需要担心 indexedDB 的最大存储空间
  • 根据stackoverflow.com/questions/5692820/max-size-in-indexeddb 没有...至于多大...嗯,很大。我会说要开始演出。如果我们能做到这一点,我相信我的老板会很高兴的。
  • 还有一个千兆字节?你确定这是可行的吗?我会推荐使用文件系统 api 而不是 indexedDB

标签: javascript filereader indexeddb


【解决方案1】:

IndexedDB 不能对记录进行部分(或投影)读/写。 FileSystem API 似乎很可能,因为它适用于像顺序查找大文件这样的用例,但我不确定。

您可能想查看最近的讨论,IndexedDB, Blobs and partial Blobs - Large Files。他们也会讨论解决您的问题的方法。

【讨论】:

  • 您链接到的讨论涉及将数据导入 IndexedDB,这不是我的问题。我的愿望是向最终用户提供一个链接,点击该链接后,浏览器会提示他们将文件保存在本地系统的某个位置,然后,当他们选择一个位置时,一次从一个条目读取数据IndexedDB,一个接一个地连接条目,组成结果文件。
猜你喜欢
  • 1970-01-01
  • 2012-10-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2020-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多