问题标签 [html5-filesystem]

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 投票
1 回答
848 浏览

google-chrome-extension - 带有 chrome 扩展的本地(沙盒)文件系统上的 CRUD 文件

我一直在尝试使用 chrome 扩展对本地驱动器进行一些 CRUD 操作。我知道我将无法直接访问本地文件系统,沙盒环境就可以了。

LocalStorage 适用于高达 5 mb 的数据。我会需要更多。我发现设置“unlimitedStorage”不会为 LocalStorage 授予更多权限。

“无限存储”

为存储 HTML5 客户端数据(例如数据库和本地存储文件)提供无限配额。如果没有此权限,扩展程序或应用程序将被限制为 5 MB 的本地存储空间。

注意:此权限仅适用于 Web SQL 数据库和应用程序缓存(请参阅问题 58985)。此外,它目前不适用于 http://*.example.com 等通配符子域。

请参阅 chrome 扩展文档

然后我尝试使用FileSystemApi。但事实证明,只有 chrome 应用程序才能使用这个 api。

据我所知,我还有 4 个其他选择:

  • WebSQL,已弃用
  • IndexedDB,看起来很有希望
  • 应用程序缓存,在unlimitedStorage 描述的注释中引用。
  • Storage api,似乎用于扩展程序和应用程序

我有一种预感,indexedDb 将允许某种形式的 CRUD。我不愿意使用 WebSQL,因为它已被弃用,而且我还没有找到有关应用程序缓存的信息,尽管我怀疑为扩展存储数据是否在其预期目的范围内。

chrome 扩展是否可以在本地文件系统上保存、加载和删除文件?我是否对 LocalStorage 限制或在 chrome 扩展中使用 fileSystem Api 有误解?IndexedDB 能满足我的需求吗?

0 投票
1 回答
1009 浏览

javascript - 图片未显示使用 chrome 文件系统 toURL

我有以下代码将图像写入文件系统,并将其读回以进行显示。在尝试文件系统 API 之前,我将整个 base64 图像加载到 src 属性中,并且图像显示正常。问题是图像可能很大,所以如果添加几张 5MB 的图像,就会耗尽内存。所以我想我只是将它们写入 tmp 存储并且只将 URL 传递给 src 属性。麻烦的是,什么都没有显示。

最初我认为 URL 可能有问题,但后来我进入文件系统目录,找到它所指的图像并用真正的二进制图像物理替换它,并将其重命名为与替换图像相同。这工作正常,图像显示正确,所以 URL 看起来不错。

我能得出的唯一结论是图像的写入在某种程度上是错误的——尤其是在创建 blob 的位置。我查看了blob API,看不到任何我可能错过的东西,但是我显然做错了什么,因为它似乎对其他人有用。

顺便说一句,我还尝试将图像存储在 IndexedDB 中并使用 createObjectURL 来显示图像 - 同样,虽然 URL 看起来正确,但屏幕上没有显示任何内容。因此尝试文件系统 API。在这两种情况下,blob 创建是相同的,具有相同的数据。

正如我提到的,源数据是一个 base64 编码的字符串。是的,我也尝试将原始 base64 数据存储在 blob 中(带和不带前缀),但这也不起作用。

其他信息 - chrome 版本 28,在 linux Ubuntu 上

回调的输出是:

除非有人可以提供一些指导,否则我有点停滞不前...

更新

我运行了一个测试,使用 B64encoder/decoder 和 atob/btoa 对 base64 图像进行编码和解码 -

结果表明 btoa/atob 功能正常工作,但 B64 不能 - 可能是因为原始编码没有使用 B64.encode 功能......

在文件系统 TEMPORARY 中生成的文件,我通过在线 base64 编码器进行比较,结果完全不同。所以问题是 - 在文件系统临时存储中,图像应该是一个精确的图像,还是填充了只有文件系统 API 才能理解的“东西”?请记住,我将原始 PNG 放在文件系统目录中并且图像正确显示,这往往表明有关图像的元数据(例如文件名)保存在其他地方......

有这个工作实现的人可以确认图像是作为图像存储在文件系统中,还是填充了额外的元数据?

0 投票
1 回答
140 浏览

javascript - 通过窗口消息传递文件系统 url 共享的 DOM 异常?

我必须将动态生成的内容文件 URL 共享到 iframe。将 URL 传递给 iframe 时出现 DOM 异常 12。

我需要指定 bufferType 还是可以发送 url?

0 投票
1 回答
107 浏览

javascript - 在 C++ 中创建文件 Javascript 对象

是否可以在 C++ 中创建文件对象(Javascript/HTML5)?

谢谢你的帮助。

0 投票
1 回答
1728 浏览

html - HTML 5 文件阅读器同步

我正在使用网络工作者和文件系统 api 来读取文件的内容。但是,每当我尝试读取文件时,我都会在 var message = read.readAsText(fileEntry); 的代码行上收到 DOM EXCEPTION 8 : NOT FOUND ERROR;谁能帮助解释为什么会发生这种情况?

0 投票
1 回答
342 浏览

javascript - Javascript/HTML5 - 简单的文件系统不工作

我决定尝试 HTML5 文件系统 API,所以我从教程中输入了一个简单的示例:

当我运行它时,FileError它记录了一个对象(代码为 2)。另外,我正在使用Windows(我这么说是因为我认为这可能与系统安全有关)

任何帮助表示赞赏!

0 投票
0 回答
442 浏览

javascript - 带有 Chrome 扩展的 background.js 中的文件系统

我在 content.js 中使用以下代码,它工作正常。

但是,当我在 background.js 中使用这些代码时,我收到一个错误“未捕获的错误:TYPE_MISMATCH_ERR:DOM 文件异常 11”。任何想法?谢谢!!

0 投票
0 回答
376 浏览

javascript - HTML5文件切片+上传=递归闭包?

我将一个非常大的文件(10 GB)拆分成块,以便通过 HTML5 的文件 API 上传。

我的代码基本上是这样的(伪代码):

问题是,我正在创造一个越来越深的封闭。我真的看不出有任何其他方式解决这个问题?我错过了什么吗?只是让关闭建立直到它最终解开?使用计时器来寻找“现在做更多”的状态?

0 投票
3 回答
2035 浏览

javascript - Using LocalFileSystem to store and display images

I tried to write a bit of code to retrieve an image file (from Wikimedia Commons), store it locally and then display it. Here my code:

Nothing is displayed. Chrome's console doesn't display any error message, so I have no idea why it's not working. Any clue?

Edit :

I have just seen I actually get a FileError, code 10, which means QUOTA_EXCEEDED_ERR, even if I start my Google Chrome with these parameters:

Actually, I get the same error with or without the --unlimited-quota-for-files parameter, which is weird. But I get a File Error 2 without --allow-file-access-from-files

0 投票
2 回答
4568 浏览

javascript - HTML 5 File API 在浏览器中上传文件并将内容保存为字符串

我希望用户将文件从他们的计算机上传到浏览器,然后将其内容保存为字符串,以便程序的其余部分对其进行解析。我正在查看 CSV 文件,但理论上,我希望这适用于任何包含某种文本的文件。这应该是所有客户端。我没有直接从上传的文件向服务器发送任何内容。

但是控制台总是记录未定义,即使我选择了一个文件。onclick 函数似乎也不起作用(可能是因为内容未定义?)

如何上传带有文本的文件并将其内容保存为字符串作为变量?

编辑 1: 有人留下了一个有用的答案,但我想删除了它。我能够更好地遵循此处发布的一些信息,其中解释了如何获取文件的内容,但我仍然遇到一些困难。该链接解释了如何上传文件,然后显示包含文件信息的警报,以及文件内容的子字符串。但是,当它们保存在变量中时,我希望能够看到整个文件的内容。我更改了他们的部分代码以创建一个包含我认为是文件内容的全局变量,但是每当我将它记录到控制台时,即使在上传文件之后,它仍然会记录undefined. onclick 警报功能也继续不显示。

如何打印/记录/警报/等包含文本的变量,以便稍后查看如何访问它?尽管使用了全局变量,但当我尝试在字符串上运行其他函数时,它说它不能这样做,因为它是undefined.

编辑 2: 根据 Ray Nicholus 的评论,我决定创建一个函数,将文件内容从 onload 函数复制到全局变量中,以便可以在函数外部使用。将我的其余程序代码添加到 onload 函数中几乎是不可能的,并且需要进行一些重大的重新格式化。

再一次,当尝试登录控制台、打印到屏幕或在 onload 函数内部调用window.text后发出警报时,一切都保持未定义或无响应。makeGlobalText(contents)这次可能有一些我没有看到的微不足道的问题。

如果我创建一个从内部接收字符串onload并将其复制到全局变量的函数,为什么我不能在外部访问该变量?