将PDF文件从Web-App写入USB-Stick

时间:2016-07-18 16:03:39

标签: javascript web usb fwrite filesystem-access

我担心这个的可行性: 在预先配置的计算机上,我将在Apache-Suite旁边预安装Web应用程序。 所以客户端和服务器是一样的!

在此Web应用程序中,用户可以 PDF文件拖放到USB图标
然后,Web应用程序应将删除的PDF写入附加的USB-Stick

我从未做过这样的事情(写入USB),所以我相当不安全。 我很清楚有关JavaScript和Filesystem-Access的浏览器限制,但是......

经过研究后我发现,可能有一些可能和 相关的(我是一个Web-Platform-Guy)解决方案:

  • 制作一个" Chrome应用"使用USB-Permission (这真的有效吗?)
  • 使用PHP查找USB然后写入(在Windows下如何工作?)
  • 使用一些Flash作为中间人(不是首选)

现在我想知道:

  1. 有没有人对前面提到的可能性有一些很好的经验?
  2. 有没有人做过类似的事情?它有用吗?你选择了哪条路?
  3. 我如何知道安装USB的驱动器,以及我如何确定?
  4. 这个问题有哪些其他可能的解决方案?

3 个答案:

答案 0 :(得分:5)

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

  1. 客户端:通过HTTP GET通过浏览器下载文件,让用户选择保存文件的位置。
  2. 服务器端:正如@mcgraphix建议的那样,将USB交互构建到后端(Node.js)代码中。
  3. 与服务器端的USB交互提供了最大的灵活性。此外,您可以利用许多库。前往npmjs.org并考虑以下Node.js服务器端软件包:

    使用服务器端方法,当用户完成拖动时,启动Web服务请求。在客户端上执行drop操作,并在为请求提供服务的服务器(Express.js或类似方法)中实现USB交互。

答案 1 :(得分:2)

如果已知棒的字母,那么从PHP编写文件将很简单

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

<强>更新

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

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

答案 2 :(得分:0)

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

您的网络应用(如果您坚持使用网络应用)应该有两个主要组件,一个服务器端组件,可以提供任意命令,客户端组件(使用XMLHttpRequest的javascript)可以向服务器端组件发出请求以执行所述任意命令。

因此,您的服务器端组件,为您的网页提供服务的组件应该有一些可以将您的pdf写入文件系统的服务器端代码,它应该也可以生成pdf文件,而不是在Web浏览器上执行此操作。

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

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

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

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