7

I am concerned with the feasibility of this: On a pre-configured machine I will have a Web-Application pre-installed, next to an Apache-Suite. So client and server are the same!

In this Web-Application Users can drag and drop PDF-Files to an USB-Icon.
Then the Web-App should write the dropped PDF to an attached USB-Stick.

I have never done something like this (writing to USB), so I am fairly insecure. And I am well aware of the browser-restrictions concerning JavaScript and Filesystem-Access, but...

after researching a bit I found out, that there might be some possible and
relevant (I'm a Web-Platform-Guy) solutions to this:

  • Make a "Chrome App" with USB-Permission (does this really work?)
  • Use PHP to find the USB and then write to it (how would that work under Windows?)
  • Use some Flash as middle man (not preferred)

Now I'd like to know:

  1. Has anyone some good experience with before mentioned possibilities?
  2. Has anybody ever done something similar? Did it work? Which path did you choose?
  3. How would I know which drive the USB is mounted, and how would I get sure?
  4. What other possible solutions to this problem are there?
4

3 回答 3

5

您有一个网站(“客户端”用户界面)和一个后端服务器(“服务器端”)在同一台机器上运行。这为您提供了 2 个选项:

  1. 客户端:通过浏览器通过 HTTP GET 下载文件,并让用户选择保存位置。
  2. 服务器端:按照@mcgraphix 的建议,将 USB 交互构建到后端 (Node.js) 代码中。

与服务器端的 USB 交互提供了最大的灵活性。此外,您可以利用许多库。前往npmjs.org并考虑以下 Node.js 服务器端包等:

使用服务端方式,当用户在客户端完成拖拽动作后发起Webservice请求,并在服务请求的服务端(Express.js或类似)方法中实现USB交互。

于 2016-08-06T16:34:32.570 回答
2

如果知道棍子的字母,那么从 PHP 编写文件将很简单

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

更新

您可以将驱动器列表读取到下拉列表中,并允许用户选择要写入的默认驱动器

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

于 2016-08-08T13:01:32.370 回答
0

您的问题更像是架构问题,而不是特定于代码的问题。

您的 Web 应用程序(如果您坚持使用 Web 应用程序)应该有两个主要组件,一个可以给定任意命令的服务器端组件,以及一个可以向服务器端组件发出请求以执行的客户端组件(使用XMLHttpRequest的JavaScript )表示任意命令。

所以你的服务器端组件,为你的网页提供服务的组件应该有一些服务器端代码,可以将你的 pdf 写入文件系统,它可能也应该生成 pdf 文件,而不是在 web 浏览器上生成。

您使用哪种技术取决于您,无论是 PHP、.Net、Node.js 等...

一般要点是您需要一个处理 HTTP 请求的服务器端框架,在您的情况下,可能是来自客户端的包含编码 pdf 的 post 请求,并相应地响应。绑定特定的 http 路由以触发您的保存逻辑。

您对服务器的 http post请求将包含您的有效负载,它是特定路径的 pdf 文件,例如http://localhost/savepdf,无论 http 侦听哪个技术堆栈(您需要对其进行配置)

您的服务器端组件应该读取传入的数据,对其进行适当的解码,然后发出文件系统请求以将接收到的有效负载写入磁盘。

于 2016-08-09T13:01:01.627 回答