Доступ к локальным файлам с помощью расширения Google Chrome
Я задавал подобный вопрос к этому ранее
Общайтесь с Денежным Ящиком с Сайта
Однако вопрос был очень расплывчатым, и теперь я знаю, что мне нужно, используя расширение.
Этот вопрос похож на следующий, однако не совсем та информация, которая мне нужна.
Расширение Chrome и локальное хранилище
Доступ к локальным файлам через расширение Google Chrome?
Перечислите локальный каталог с расширением Chrome
Что мне действительно нужно сделать, это запустить файл 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, и затем выполнить командный файл.
Я понимаю, что могу обойти необходимость в папке Chrome с помощью плагина npapi
https://developer.chrome.com/extensions/npapi
Тем не менее, это, по-видимому, потенциальное минное поле, поэтому я бы не хотел этого делать.
Если кто-то может указать мне правильное направление создания папки и доступа к файлу, это будет очень ценно.
Ответы
Ответ 1
Вам нужно написать расширение для Chrome, которое предоставляет API для вашего сайта. Это легкая часть. Вы внедряете скрипт контента на свой веб-сайт, а затем используете chrome.extension.sendMessage
для обратной связи с вашим расширением.
Сложная часть заключается в том, чтобы фактически открыть файл bat
из вашего расширения. С NPAPI это было бы легко, поскольку вы могли бы просто написать плагин C++, который вызывает CreateProcess
или что-то в этом роде. Вопреки тому, что вы сказали, это довольно хорошее решение. Но, к сожалению, NPAPI не вариант, так как он устарел.
Так что вам следует использовать Native Messaging. По сути, это Chrome API, который позволяет расширениям обмениваться сообщениями с собственными приложениями, используя стандартные потоки ввода и вывода.
Узнайте больше об этом здесь: https://developer.chrome.com/extensions/messaging#native-messaging-host
Ответ 2
-
Если у вас есть доступ к компьютерам, на которых развернут ваш продукт, вы можете использовать NaCL и запустить chrome с флагом командной строки --no-sandbox
и использовать следующую переменную среды:
set NACL_DANGEROUS_ENABLE_FILE_ACCESS=1
Больше информации в этом блоге
-
Другой вариант - NPAPI.
Ответ 3
Это запрещено по соображениям безопасности.
Если запуск файла .bat был разрешен, это позволило бы запускать вредоносные команды на компьютере.