Записывать PDF-файлы из Web-приложения на USB-флешку

javascript web usb fwrite filesystem-access

558 просмотра

3 ответа

2097 Репутация автора

Я обеспокоен осуществимостью этого: на предварительно сконфигурированной машине у меня будет предварительно установлено веб-приложение, рядом с Apache-Suite. Так что клиент и сервер одинаковы!

В этом веб-приложении пользователи могут перетаскивать PDF-файлы на USB-значок .
Затем веб-приложение должно записать брошенный PDF-файл на подключенную USB-карту .

Я никогда не делал что-то подобное (запись на USB), поэтому я довольно неуверен в себе. И я хорошо знаю об ограничениях браузера, касающихся JavaScript и Файловой системы-Access, но ...

после небольшого исследования я обнаружил, что могут быть некоторые возможные и
уместные (я веб-платформа-парень) решения для этого:

  • Сделайте « Chrome App » с USB-разрешением (это действительно работает?)
  • Используйте PHP, чтобы найти USB, а затем записать на него (как это будет работать под Windows?)
  • Использовать Flash в качестве посредника (не рекомендуется)

Теперь я хотел бы знать:

  1. Кто-нибудь имеет хороший опыт с ранее упомянутыми возможностями?
  2. Кто-нибудь когда-нибудь делал что-то подобное? Это сработало? Какой путь вы выбрали?
  3. Как я узнаю, на каком накопителе установлен USB, и как я могу убедиться в этом?
  4. Какие еще возможные варианты решения этой проблемы есть?
Автор: Sebastian G. Marinescu Источник Размещён: 18.07.2016 04:03

Ответы (3)


5 плюса

3207 Репутация автора

У вас есть веб-сайт (пользовательский интерфейс на стороне клиента) и внутренний сервер (на стороне сервера), работающий на одном компьютере. Это дает вам 2 варианта:

  1. На стороне клиента: загрузите файл через браузер через HTTP GET и дайте пользователю выбрать, где он его сохранит.
  2. На стороне сервера: встроите свои взаимодействия с USB в внутренний код (Node.js), как рекомендует @mcgraphix.

Взаимодействие с USB на стороне сервера обеспечивает наибольшую гибкость. Кроме того, есть ряд библиотек, которые вы можете использовать. Перейдите на npmjs.org и рассмотрите, среди прочего, следующие серверные пакеты Node.js:

При подходе на стороне сервера инициируйте запрос веб-службы, когда пользователь завершит действие перетаскивания на клиенте, и реализуйте взаимодействие с USB на сервере (Express.js или аналогичный), который обслуживает запрос.

Автор: Jared Dykstra Размещён: 06.08.2016 04:34

2 плюса

6666 Репутация автора

Если буква флешки известна, то написание файла из PHP будет простым

file_put_contents( 'E:\\folder\\file.pdf', $data );

Обновить

Вы можете прочитать список дисков в раскрывающемся списке и позволить пользователю выбрать диск по умолчанию для записи в

https://stackoverflow.com/a/8210132/696535

Автор: Pawel Размещён: 08.08.2016 01:01

0 плюса

2094 Репутация автора

Ваш вопрос - больше вопрос архитектуры, чем вопрос, связанный с кодом.

Ваше веб-приложение (если вы настаиваете на веб-приложении) должно иметь два основных компонента: компонент на стороне сервера, которому можно давать произвольные команды, и компонент на стороне клиента (javascript, использующий XMLHttpRequest ), который может отправлять запросы на выполнение компонента на стороне сервера. сказал произвольные команды.

Итак, ваш серверный компонент, компонент, который обслуживает вашу веб-страницу, должен иметь некоторый серверный код, который может записывать ваш pdf в файловую систему, он, вероятно, должен также генерировать pdf-файл, а не делать это в веб-браузере.

Какие технологии вы используете, зависит от вас, будь то PHP, .Net, Node.js и т. Д.

Основная идея заключается в том, что вам нужна серверная структура, которая обрабатывает HTTP-запросы, в вашем случае, вероятно, почтовый запрос от клиентской стороны, содержащий закодированный pdf, и соответствующий ответ. Свяжите определенный http-маршрут, чтобы активировать логику сохранения.

Ваш http- запрос к серверу будет содержать вашу полезную нагрузку, которая представляет собой файл pdf по определенному пути, например, http: // localhost / savepdf, который использует любой технологический стек http (вам необходимо это настроить).

Ваш серверный компонент должен прочитать входящие данные, декодировать их соответствующим образом, а затем сделать запрос файловой системы, чтобы записать полученные данные на диск.

Автор: Daniel Lane Размещён: 09.08.2016 01:01
Вопросы из категории :
32x32