Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Access Local Files using a Google Chrome Extension

Tags:

I have asked a similar question to this previously

Communicate with Cash Drawer from Website

However the question was very vague and I now know what I require is possible using an extension.

This question is similar to the following, however, not quite the information I need.

Chrome extension and local storage

Access local files through Google chrome extension?

List a local directory with chrome extension

What I effectively need to do is run a bat file on the users computer from my website. The users of the site will be employees of the company and the computers they will be using will be provided by us, therefore I can make any necessary changes to the machines for this to work before shipping to the user.

I understand that you can create a local folder on the computer that you can allow chrome to have access to, therefore maintaining security. I have searched for how to do this but cannot seem to nail down what I need to search for and this in particular is where I need help.

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

I have not yet built an extension but I am willing to take on the challenge so I do not need help with this side of things. The two guides below seem more than ample.

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

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

This is where I am currently at.

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

What I need to achieve next is to create a command to call the extension, the extension then to navigate to the local folder that chrome can access to and then execute a batch file.

I realise I could work around the need for the chrome folder by using the npapi plugin

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

However, this is apparently a potential minefield so I would not like to do this.

If someone can point me in the right direction of how to create the folder and access the file, this would be most appreciated.

like image 911
The Humble Rat Avatar asked Feb 20 '14 15:02

The Humble Rat


People also ask

Can a Chrome extension access local files?

For security reasons, by default the Chrome browser does not allow extensions to access local files. If you want the accelerator to access local files (locations of "file:///...", instead of "http://" or "https://"), you must configure Chrome to allow the access.

Can browser access local files?

Web browsers (and JavaScript) can only access local files with user permission. To standardize the file access from the browser, the W3C published the HTML5 File API in 2014. It defines how to access and upload local files with file objects in web applications.


1 Answers

You are going to need to write a Chrome extension that exposes an API to your website. This is the easy part. You inject a content script to your website, and then use chrome.extension.sendMessage to communicate back to your extension.

The hard part is to actually open the bat file from your extension. With NPAPI, this would have been easy, since you could just write a C++ plugin that calls CreateProcess or something. Contrary to what you said, it's a pretty good solution. But unfortunately, NPAPI isn't an option, since it's being deprecated.

So what you should do is to use Native Messaging. Basically, it's a Chrome API that allows extensions to exchange messages with native applications using standard input and output streams.

Read more about it here: https://developer.chrome.com/extensions/messaging#native-messaging-host

like image 181
Alon Gubkin Avatar answered Sep 30 '22 10:09

Alon Gubkin