【问题标题】:chrome.filesystem: Rename a file and save it on the client's diskchrome.filesystem:重命名文件并将其保存在客户端磁盘上
【发布时间】:2015-02-16 03:46:53
【问题描述】:

如何使用 chrome.filesystem 重命名文件并保存它。例如,如果我的文件名为 myfile.txt,我将重命名 myfile.html 并在不使用 saveAs 函数的情况下保存它。如果这不可能,我有解决方案吗?

问题是我必须将文件保存在客户端的磁盘上。所以对我来说使用文件系统函数不能是一个解决方案,我还没有看到 chrome.filesystem API 允许。

提前感谢您!我有点气馁。我也看了 browserify 来解决这个问题,但我还没有找到解决方法。

【问题讨论】:

  • 不清楚你在问什么;或者更准确地说,不清楚你已经做了什么以及哪一步出现了问题。逐步说明您的用例。
  • 您好 Xan,这是我尝试做的。用户加载包含 .scss、.coffee 等的文件。在文件列表中,此人单击 .coffee 文件并进行编译。不起作用的是,一旦编译,.coffee 文件必须使用 .js 扩展名重命名才能使用。这是我做不到的。我不想要 SaveAs 选项。有点像 CodeKit。应用程序编译文件并将其保存到磁盘。这与我想要实现的有点相同。但是我看不到如何通过更改扩展名来保存文件。我更清楚了吗?
  • 嗯,嗯,这是你之前的问题的重复:stackoverflow.com/questions/28460704/…
  • 嗨,Xan,是的,几乎是一样的。但我每次都试图更好地解释它。人们给我的建议对我很有帮助,我试着去测试它们。最后一次这是为了回应我的两个问题之一。但是文件重命名问题仍然存在,我找不到解决方案。这就是为什么我写的这个问题与上一个问题有点重复。对不起。
  • API 根本不提供重命名。这相当于保存到一个新文件(出于同样的安全原因,不允许这样做)。为了改进问题,您应该编辑现有的问题(除非它使已经存在的答案无效)

标签: google-chrome google-chrome-app google-chrome-os


【解决方案1】:

要重命名文件,您必须能够在用户的文件系统上创建新文件。您可以通过要求用户打开项目所在的整个目录来获得此权限。然后,您可以通过在生成的DirectoryEntry 上调用getFile 和{ create: true } 在该目录中创建所需的任何文件。

编辑:请参阅此example 以了解用户选择的复制文件。您可以使用chrome.fileSystem.chooseEntry 的结果作为保存文件的DirectoryEntry,而不是像这里那样使用fs.root。

【讨论】:

  • 嗨,赖利,感谢您的回答。这种方式适用于 HTML5 文件系统。但我无法备份此人磁盘上的“物理”文件。因为要做这种事情,我绝对要通过 API chrome.filesystem 对吧?
  • chrome.fileSystem API 为您提供常规的 HTML5 文件系统 API 对象。一旦你有了一个 Entry 对象,它的行为就完全一样了。
  • 但我不明白如何使用这两个 API。因为当我在 HTML5 中使用文件系统 API 时,文件路径与我使用 API chrome.filesystem 不同。带有文件路径的 Chrome.filesystem API 位于所选文件夹中。而另一个他是我不知道在哪里:)。给你一个例子。因为如果它可以工作,我会非常高兴 :) 这是我完成我的项目唯一想念的事情。非常感谢您的帮助!真的很感激。
  • 您观察到的差异正是 chrome.fileSystem API 的用途。它为您提供 HTML5 文件系统对象,这些对象引用用户指定文件夹中的文件系统上的文件。如果您从 chrome.fileSystem 获取 DirectoryEntry,您可以在该文件夹中创建一个文件。
  • 我明白你说的,但我不知道怎么做。我的意思是,我可以使用 chrome.filesystem 将文件写入磁盘,但不能使用相同的 API 重命名文件……除非您执行与 saveAs 等效的操作。我不会。你手头没有一个简单的例子让我更好地理解吗?我知道有这样的例子并不容易,但我真的会理解:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多