#javascript #google-chrome #google-chrome-extension
#javascript #google-chrome #google-chrome-расширение
Вопрос:
Я пытаюсь создать приложение для своей работы (будет использоваться только в моем офисе), и, среди прочего, мне нужен способ загрузки файла (это всегда будет один документ ODT и один текстовый документ, который будет инициирован нажатием кнопки пользователем на определенной странице — стандартная загрузка) из нашего локальногосервер. Эти два файла создаются на сервере, а затем отправляются для загрузки пользователю, который его запросил, так что эта часть проста, как и любая другая веб-страница, которая предлагает вам загрузить.
Но после завершения загрузки мне нужно как-то:
1) автоматически откройте файл ODT (OpenOffice writer), чтобы пользователь мог продолжить его редактирование. Что будет дальше, не важно…
2) автоматическое перемещение текстового файла в определенную папку на диске пользователя (это необходимо, поскольку эта конкретная папка отслеживается нашим специальным принтером, и всякий раз, когда принтер обнаруживает файл в этой папке, он автоматически начинает печать). Установка папки загрузки Chrome по умолчанию в качестве этой отслеживаемой папки не является опцией — поэтому мне НУЖНО автоматически перемещать текстовый файл после загрузки в эту отслеживаемую папку.
3) После завершения первых двух действий мне нужно очистить папку загрузки по умолчанию (папку, в которой Chrome загружается по умолчанию), потому что она будет заполнена этими файлами, и они больше не нужны.
Было бы здорово, если бы я мог выполнить это только с помощью javascript, но, как я знаю, нет способа манипулировать файлами в локальной системе без отображения диалогового окна для пользователя — так что это не вариант.
Я полагаю, что эта часть может быть выполнена с помощью расширения Chrome, что является приемлемым решением, поскольку это приложение будет использоваться только в моем офисе. Но я не уверен, как и действительно ли возможно выполнить то, что я хочу, поэтому мне нужна ваша помощь.
P.S. Важно, чтобы после того, как пользователь нажмет «Загрузить» на странице, чтобы загрузить ODT и TXT-файл, в браузере не было других окон, диалоговых окон и других «вопросов», но все после этого должно идти автоматически.
Спасибо!
Комментарии:
1. Javascript не может этого сделать (по соображениям безопасности), поэтому вам нужно изучить собственный клиент NaCl и собственные сообщения .
2. Спасибо, Дэвид, но возможно ли это сделать с расширением Google Chrome, которое будет выполнять эту работу с файлами для меня (например, загрузка extension monitor, при обнаружении целевых файлов он делает с ними то, что я хочу). Я знаю, что в Google Chrome есть файловая система Chrome и API downloadd, но не уверен, можно ли и как его использовать в моем случае, и можно ли обойтись без каких-либо дополнительных диалоговых окон и вводов от usre.
3. @David Смотрите мой ответ — это можно сделать ограниченным способом с
chrome.downloads
помощью API
Ответ №1:
Да, вы можете выполнять эти задачи с помощью chrome.downloads
API, если вы можете использовать подпапку папки Downloads в качестве целевого объекта для вашего принтера. Боюсь, вы не можете загрузить в произвольную папку.
-
После завершения загрузки, которую вы начали с
chrome.downloads.download
помощью, вы можете начать ее открытие сchrome.downloads.open(downloadId)
помощью . -
Вы можете инициировать загрузку во вложенную папку, указав относительный путь к
chrome.downloads.download
(обратите внимание на/
косую черту вместоprintout/file.txt
. -
Вы можете запомнить идентификатор загрузки и очистить его после
chrome.downloads.removeFile(downloadId)
этого.
Пожалуйста, обратите внимание на разрешения, которые вам нужно добавить, они довольно детализированы для этого API.
Комментарии:
1. В своем вопросе под номером 2 он говорит: «Настройка папки загрузки Chrome по умолчанию в качестве этой отслеживаемой папки не является опцией»
2. @David Это понятно — вы не можете отслеживать всю папку загрузок. Определенная вложенная папка, в которую не записывается, если специально не сделано так, — это жизнеспособно.
3. Хорошее решение с вложенной папкой может работать, но я боюсь, что пользователи могут случайно удалить эту папку, и это может вызвать много проблем с принтером. И если это произойдет, когда меня не будет в офисе, весь бизнес остановится, так что это слишком рискованно. Но есть ли какие-либо другие решения, о которых вы, ребята, могли подумать, это не обязательно должно быть расширение Chrome. Может быть, использовать что-то еще, например, java applet или VB или что-то в этом роде. Не то чтобы я с ними знаком, но я думаю, что я мог бы что-то придумать, потому что это очень просто, что мне нужно
4. При необходимости папка будет воссоздана автоматически; вы можете создать ее вручную, заблокировав ее разрешения, если вы беспокоитесь об удалении. Что касается другого решения, это, вероятно, будет новый вопрос. Удачи.
5. Xan можете ли вы хотя бы предположить, в каком направлении искать альтернативные решения? Я просто не могу понять это. Я приму ваш ответ, потому что он помог мне, если я решу использовать папку загрузки по умолчанию (с вложенной папкой), но я просто хотел бы, чтобы это можно было сделать без ее использования. Так что можете ли вы, если знаете, указать мне, где искать альтернативы 🙂