当前位置: 首页 > 面试题库 >

Chrome扩展程序如何将许多文件保存到用户指定的目录中?

左恺
2023-03-14
问题内容

我正在开发一个Chrome扩展程序以用作内部工具。它要求的行为是:

  1. 作为页面操作,请在查看某些Intranet页面时启用地址栏图标。
  2. 当用户单击该图标时,在页面上标识某种特定媒体类型(例如.jpg)的所有文件,以及
  3. 将它们全部静默保存到用户本地驱动器上的目录中。

那么,目前可用的方法是什么?我看过的是:

  • 该chrome.FileSystem API —但这不保存任何用户访问的位置的文件。而是将存储的文件隐藏在未记录目录中的混淆名称后面。用户要求将文件以其原始名称存储在可访问的目录中。
  • HTML5下载属性,方法是创建数据:URL并以编程方式单击它。这会为每个文件弹出一个“另存为…”对话框,当单个页面上有一百个资产时,这是不可接受的。用户要求下载文件时,除了单击单个图标外,不能进行进一步的交互。
  • 该浏览器下载API,但那只是在测试和开发渠道提供。用户需要与主流Chrome浏览器一起使用此扩展程序。
  • 使用[Native Messaging API,方法是创建一个小的.exe,将文件保存到磁盘,然后将.jpg作为blob传递给它。这似乎很麻烦,我什至不确定如何可靠地将大blob传递给EXE。

我可以尝试另一种方法吗?


问题答案:

您已经做了很多研究。确实,常规网页无法在没有任何插件或扩展的情况下写入用户的文件系统。而且,正如您所观察到的,HTML5 Filesystem
API
仅提供对虚拟文件系统的访问。

但是,您将chrome.fileSystemAPI与HTML5FileSystem API 混淆了。与HTML FileSystem API不同,Chrome的fileSystem(应用程序)API可以直接写入用户指定的用户文件系统(例如~/Documents%USERPROFILE%\Documents)。

该API仅适用于Chrome 应用
,不适用于扩展程序。这不是问题,特别是因为您正在开发内部工具时,因为您可以安装应用程序和扩展,并使用消息传递在扩展(页面操作)和应用(文件系统访问)之间进行通信。

关于chrome.downloads:由于您的扩展程序是内部的,因此您可以强制用户进入beta/dev通道才能使用此API。此API的唯一限制是文件将保存在用户定义的Downloads文件夹(的子目录)中。

编辑:chrome.downloads现在,所有通道都可以使用该API,包括稳定分支(自Chrome 31起)。



 类似资料:
  • 我已经创建了一个chrome扩展来学习英语,它可以构建一个包含源代码/翻译等的词典。 现在,我想将这个“文件”(我将/会用字典条目构建一个“文件”)发送到Google Drive,并在我的Android应用程序中使用这个文件。 但我不想将此文件保存在我的个人驱动器帐户中,而是保存在当前用户的驱动器中,即使用chrome扩展名的用户(当然,如果该用户有驱动器帐户)。 在我找到的所有例子中,他们为“我

  • 在我的程序中,我想让用户能够将一个文件保存到他们选择的目录中。在做了一点研究之后,我发现了这个名为JFileChooser的俏皮类。我想做的是允许用户通过JFileChooser GUI转到他们想要的目录,为他们的文件键入一个名称,并允许他们将他们的文件保存到想要的目录。我试着在网上寻找一个解决方案,如何做到这一点,但几乎在我读到的所有地方,最后的答案都是“现在你必须让你的程序保存文件”,但我不知

  • 问题内容: 我正在创建一个扩展程序,它将从网站上下载mp3文件。我正在尝试通过创建带有指向mp3文件的链接的新标签来实现此目的,但是chrome会继续在播放器中打开它而不是下载它。有什么方法可以创建一个弹出窗口,要求用户“另存为”文件? 问题答案: 快进了3年,现在GoogleChrome提供了API(自Chrome31起)。 在清单中声明许可后,可以通过以下调用启动下载: 如果要在脚本中生成文件

  • 问题内容: 我使用以下代码将文件保存在swift 3的文档目录中: 但是正如您所看到的,我不习惯获取文档目录路径,因为它仅给出URL而不是字符串。 问题: 如何从文件管理器获取字符串? 我的代码有崩溃的可能吗? 问题答案: 请反过来考虑。 建议使用此方法来处理文件路径,因为它包含用于添加和删除路径组件和扩展名的所有便捷方法,而不是Apple从中删除了这些方法。 不鼓励您连接诸如之类的路径。这很容易

  • 问题内容: 在这里和其他地方,我已经看到许多对此的部分答案,但是我非常适合作为新手程序员,并希望找到一个彻底的解决方案。我已经能够在Chrome Canary(v。29.x)中设置笔记本电脑麦克风的录制音频,并且可以使用recorder.js相对容易地设置录制.wav文件并将其保存在本地,例如: http://webaudiodemos.appspot.com/AudioRecorder/inde

  • 我想上传文件并保存到特定的目录。而且我对文件的概念是陌生的。当我从我的页面上传文件时,它们保存在另一个目录(C:\ Users \ ROOTCP ~ 1 \ AppData \ Local \ Temp \ multipartbody 989135345617811478 astemporary file)而不是指定的目录。我不能设置它。请帮我找到解决办法。提前感谢所有的帮助。 上传的文件为什么保