Java 如何从我的web服务器编辑用户文件系统上的文件?

Java 如何从我的web服务器编辑用户文件系统上的文件?,java,windows,linux,macos,Java,Windows,Linux,Macos,我真的在寻找实现建议,因为我已经进入了一个我不熟悉的新领域 在最简单的层面上,我希望找到一种可以从web服务器读/写用户机器的方法。为了实现这一点,我想我必须在用户机器上安装某种“插件”,它可以接收(或轮询?)服务器的指令 以上是我目前的思路,可能是使用JAVA来实现这一点。这需要在Linux、Mac和Windows操作系统上运行 我真的在寻找关于以上方面的建议,这是个好主意吗?有更好的方法吗?有什么东西我可以建立在上面吗 我真的很感谢所有的意见和建议,因为这是我以前没有做过的事情 感谢Java

我真的在寻找实现建议,因为我已经进入了一个我不熟悉的新领域

在最简单的层面上,我希望找到一种可以从web服务器读/写用户机器的方法。为了实现这一点,我想我必须在用户机器上安装某种“插件”,它可以接收(或轮询?)服务器的指令

以上是我目前的思路,可能是使用JAVA来实现这一点。这需要在Linux、Mac和Windows操作系统上运行


我真的在寻找关于以上方面的建议,这是个好主意吗?有更好的方法吗?有什么东西我可以建立在上面吗

我真的很感谢所有的意见和建议,因为这是我以前没有做过的事情


感谢Java,您可以通过启动一个客户端应用程序,在文件系统上执行一组有限的操作


如果限制太大,则需要提供一个链接,指向将在用户桌面计算机上安装/执行的客户端应用程序的下载。

对于Java,您可以通过启动客户端应用程序,该应用程序将能够在文件系统上执行有限的一组操作


如果限制太大,则需要提供一个链接,指向将在用户桌面计算机上安装/执行的客户端应用程序的下载。

对于用户来说,web浏览器插件可能是最简单的,因为用户不必再管理另一个正在运行的应用程序,然而,它也有其局限性,比如必须为每个浏览器开发一个插件。此外,用户还需要运行浏览器

您可以让用户安装一个桌面应用程序,他们必须保持该应用程序的运行,因此将其作为服务安装可能是理想的


您还可以使用插件作为web浏览器和桌面应用程序之间的楔子,这就是Flash的工作方式。

对于用户来说,web浏览器插件可能是最简单的,因为用户不必再管理另一个正在运行的应用程序,但它有其局限性,例如必须为每个浏览器开发插件。此外,用户还需要运行浏览器

您可以让用户安装一个桌面应用程序,他们必须保持该应用程序的运行,因此将其作为服务安装可能是理想的


您还可以使用插件作为web浏览器和桌面应用程序之间的楔子,这就是Flash的工作方式。

要真正了解您必须回答“为什么”的问题,您为什么要这样做

如果您只是试图在用户的机器上存储一些本地需要的状态,那么对于小事情,您可以依赖cookie,或者对于更大的需要,您可以使用HTML5中的新Web数据库功能


如果您需要访问特定的文件,那么实际上您将不得不绕过Java在网页上运行时的安全沙盒。我会把它留给其他人去做,我自己也不知道如何马上去做

要真正了解,你必须回答“为什么”这个问题,你为什么要这样做

如果您只是试图在用户的机器上存储一些本地需要的状态,那么对于小事情,您可以依赖cookie,或者对于更大的需要,您可以使用HTML5中的新Web数据库功能


如果您需要访问特定的文件,那么实际上您将不得不绕过Java在网页上运行时的安全沙盒。我会把它留给其他人去做,我自己也不知道如何马上去做

我假设您希望在用户机器上读取和写入通常无法访问的特定文件(即不是临时文件或沙箱中的文件)。您希望从Web服务器执行此操作

在您寻找跨平台时,我会选择java。考虑到您的需求很简单(从远程命令读取/写入文件),您可能会以JRE 1.4为目标,它已经有很多年的历史了,但安装在大约98%的桌面上()

以下是您如何处理此问题的概述:

  • 创建从URL获取命令列表的java小程序或java Web Start应用程序。URL可以包含标识机器所需的任何特定标识,例如用户ID(请参阅下面的备选方案)
  • 您的Web服务器生成小程序应执行的命令列表—创建文件、读取文件、写入文件,并将这些命令作为响应发送
  • 对小程序/应用程序进行签名,使其能够摆脱沙箱的限制。为此,您需要获得证书。稍后将对此进行详细介绍
  • 告知并教育用户小程序正在执行的操作。例如,您网站上的一个页面,说明为什么要求他们信任您的证书以及其含义
您可以将其实现为applet或应用程序,大部分工作基本相同。我谈到applet,但请记住它同样适用于应用程序

更详细地说: 小程序从URL请求命令列表。为了阻止在其他恶意站点上使用小程序的尝试,您应该使用HTTPS获取命令列表,以便对服务器进行身份验证。URL应该硬编码到小程序中,这样任何更改URL的尝试都会破坏签名。如何通过URL将命令传递给小程序取决于您,例如,您可以使用XML或RMI,只需将命令列表作为对象发送

我提到了使用userid来识别机器-使用机器的MAC地址也是一种可能。看

获得命令列表后,小程序将使用java文件I/O API执行这些命令。请参阅javadocs中的FileReader/FileWriter。您可以包括适当的日志记录,以便稍后在必要时可以审核小程序操作。一旦小程序运行完毕