Расширение Google Chrome — загрузка, перемещение и удаление файлов

#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 в качестве целевого объекта для вашего принтера. Боюсь, вы не можете загрузить в произвольную папку.

  1. После завершения загрузки, которую вы начали с chrome.downloads.download помощью, вы можете начать ее открытие с chrome.downloads.open(downloadId) помощью .

  2. Вы можете инициировать загрузку во вложенную папку, указав относительный путь к chrome.downloads.download (обратите внимание на / косую черту вместо ): printout/file.txt .

  3. Вы можете запомнить идентификатор загрузки и очистить его после chrome.downloads.removeFile(downloadId) этого.

Пожалуйста, обратите внимание на разрешения, которые вам нужно добавить, они довольно детализированы для этого API.

Комментарии:

1. В своем вопросе под номером 2 он говорит: «Настройка папки загрузки Chrome по умолчанию в качестве этой отслеживаемой папки не является опцией»

2. @David Это понятно — вы не можете отслеживать всю папку загрузок. Определенная вложенная папка, в которую не записывается, если специально не сделано так, — это жизнеспособно.

3. Хорошее решение с вложенной папкой может работать, но я боюсь, что пользователи могут случайно удалить эту папку, и это может вызвать много проблем с принтером. И если это произойдет, когда меня не будет в офисе, весь бизнес остановится, так что это слишком рискованно. Но есть ли какие-либо другие решения, о которых вы, ребята, могли подумать, это не обязательно должно быть расширение Chrome. Может быть, использовать что-то еще, например, java applet или VB или что-то в этом роде. Не то чтобы я с ними знаком, но я думаю, что я мог бы что-то придумать, потому что это очень просто, что мне нужно

4. При необходимости папка будет воссоздана автоматически; вы можете создать ее вручную, заблокировав ее разрешения, если вы беспокоитесь об удалении. Что касается другого решения, это, вероятно, будет новый вопрос. Удачи.

5. Xan можете ли вы хотя бы предположить, в каком направлении искать альтернативные решения? Я просто не могу понять это. Я приму ваш ответ, потому что он помог мне, если я решу использовать папку загрузки по умолчанию (с вложенной папкой), но я просто хотел бы, чтобы это можно было сделать без ее использования. Так что можете ли вы, если знаете, указать мне, где искать альтернативы 🙂