使用Google Chrome扩展程序访问本地文件

时间:2014-02-20 15:21:44

标签: google-chrome google-chrome-extension

我之前曾问过类似的问题

Communicate with Cash Drawer from Website

然而问题非常模糊,我现在知道我需要的是使用扩展名。

这个问题与以下类似,但不完全是我需要的信息。

Chrome extension and local storage

Access local files through Google chrome extension?

List a local directory with chrome extension

我真正需要做的是从我的网站上运行用户计算机上的bat文件。该网站的用户将是公司的员工,他们将使用的计算机将由我们提供,因此我可以对机器进行任何必要的更改,以便在运送给用户之前使用。

我了解您可以在计算机上创建一个允许chrome访问的本地文件夹,从而保持安全性。我已经搜索了如何做到这一点,但似乎无法确定我需要搜索的内容,尤其是我需要帮助的地方。

http://developer.chrome.com/apps/fileSystem

我还没有建立扩展,但我愿意接受挑战,所以我不需要帮助这方面的事情。下面的两个指南似乎不仅仅是充足的。

http://lifehacker.com/5857721/how-to-build-a-chrome-extension

http://css-tricks.com/colorpeek-part-2-building-first-chrome-extension/

这是我目前所处的位置。

{
  "name": "Open Till",
  "version":"1",
  "manifest_version": 2,
  "description": "Allow POS Users to Open their Till",
  "browser_action": {
    "default_icon": "icon.jpg"
  }
}

接下来我需要创建一个命令来调用扩展,然后扩展导航到chrome可以访问的本地文件夹,然后执行批处理文件。

我意识到我可以通过使用npapi插件

来解决对chrome文件夹的需求

https://developer.chrome.com/extensions/npapi

然而,这显然是一个潜在的雷区,所以我不想这样做。

如果有人可以指出我如何创建文件夹和访问文件的正确方向,那将非常感激。

3 个答案:

答案 0 :(得分:14)

您需要编写一个Chrome扩展程序,向您的网站公开API。这是简单的部分。您为自己的网站添加了inject内容脚本,然后使用chrome.extension.sendMessage与您的扩展程序进行通信。

困难的部分是从您的扩展程序中实际打开bat文件。使用NPAPI,这本来很容易,因为您可以编写一个调用CreateProcess或其他东西的C ++插件。与你所说的相反,这是一个非常好的解决方案。但不幸的是,NPAPI不​​是一种选择,因为它是deprecated

所以你应该做的是使用 Native Messaging 。基本上,它是一个Chrome API,允许扩展使用标准输入和输出流与本机应用程序交换消息。

在这里阅读更多相关信息: https://developer.chrome.com/extensions/messaging#native-messaging-host

答案 1 :(得分:3)

  • 如果您可以访问部署产品的计算机,则可以使用NaCL并使用--no-sandbox command-line标志启动chrome并使用以下环境变量:

    set NACL_DANGEROUS_ENABLE_FILE_ACCESS=1

    有关此blog

  • 的更多信息
  • 另一个选项是NPAPI。

答案 2 :(得分:-1)

出于安全原因,不允许这样做。 如果允许运行.bat文件,则允许在计算机上运行恶意命令。