【问题标题】:how to store the results of input (webkitdirectory) for later usage?如何存储输入结果(webkitdirectory)以供以后使用?
【发布时间】:2012-10-13 14:01:09
【问题描述】:

我想允许用户选择一个目录(我在其中解析一些文本文件)并将result(List<File>) 存储在同一客户端上的PERSISTENT 存储中,这样当用户返回时,就不需要再次选择相同的目录。

在会话期间选择目录(通过<input webkitdirectory="..." />)然后访问目录并解析文件已经可以正常工作,但我不知道我应该保存什么样的数据以便以后检索它。我尝试过使用window.webkitResolveLocalFileSystemURL(),但到目前为止还没有成功……有什么想法吗?

【问题讨论】:

  • 如果你能详细说明一下细节会很有帮助。
  • 预期的工作流程如下:我只对重新-访问所选目录中的文件感兴趣
  • 您不能这样做,除非 a) 文件在本地存储中 b) 用户重新选择相同的目录。对不起,我不编规则,我只是指出来;)
  • 好的,是否可以存储指向目录的链接,以便用户只需重新确认(而不是再次查找)?我只对 重新-当用户下次再次访问应用程序(在同一客户端上)时访问所选目录中的文件,而无需在某处上传(或复制)文件,这用于以下原因:a)文件可能真的很大,b)所选目录中的文件可能不同(与上次会话相比),c)我只需要在用户积极使用应用程序时读取和解析文件。
  • 对不起,我真的不认为这是可能的。同样,您不能缓存用户上传的最后一个文件的位置。如果您决定将文件复制到本地存储,您可以向用户提供文件在本地存储中的位置。因此,他可以在那里修改它们。

标签: dart html5-filesystem


【解决方案1】:

好的,所以你正在使用类似的东西:

<input type="file" id="file-input" webkitdirectory="" directory="">

这允许用户上传目录。粗略地说,这里是获取上传文件列表的代码:

query("#file-input").on.change.add((e) {
  print(e.target.files);
});

听起来你已经想通了。

真的,你只是得到一个文件列表。我查看了 e.target,我认为其中没有与目录本身相关的任何内容。例如,我没有看到有关目录名称的任何信息,而且您也不会突然拥有对该目录的写入权限。下次用户加载页面时,您也无法从该目录上传文件,而无需再次选择目录。

但是,您可以做的是从该目录上传文件并使用本地文件存储在本地保存这些文件的副本

另见:

顺便说一句,我知道我无法完全实现您想要的,但如果您同意我的回答,请接受。如果我在 Stack Overflow 上回答 100 个问题,我的老板答应给我买一只小狗;)

【讨论】:

  • 嗨 Shannon,感谢您的回复,不幸的是它并没有给我带来任何进一步的信息,因为避免上传文件正是我想要的,但感谢您的时间:-)
  • 您不必将文件上传到服务器。 “使用 HTML5 文件系统 API”p.图 20-21 显示了如何将文件复制到本地存储中。因此,您不必实际将文件上传到服务器,但您不能只读取/写入用户硬盘上的任何位置。我希望这能解决问题。
猜你喜欢
  • 2011-05-06
  • 2011-04-13
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 2021-01-15
  • 2017-01-04
  • 2017-11-28
相关资源
最近更新 更多