我用Java编写的web应用程序如何在客户端打开文件?

我用Java编写的web应用程序如何在客户端打开文件?,java,Java,我编写了一个JavaWeb应用程序,它将文件从服务器复制到客户机。用户应该能够通过单击在客户端打开该文件。在我的java代码中,我使用: Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+ FilePath); 其中文件路径具有客户端的IP地址。此命令打开文件,但问题是文件在服务器端而不是客户端打开。有人知道我该怎么做吗 谢谢,Web服务器无法访问客户端的计算机。想象一下,当你访问谷歌或其他任何网站时,他们

我编写了一个JavaWeb应用程序,它将文件从服务器复制到客户机。用户应该能够通过单击在客户端打开该文件。在我的java代码中,我使用:

Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+ FilePath);  
其中文件路径具有客户端的IP地址。此命令打开文件,但问题是文件在服务器端而不是客户端打开。有人知道我该怎么做吗


谢谢,

Web服务器无法访问客户端的计算机。想象一下,当你访问谷歌或其他任何网站时,他们是否可以在你的机器上启动程序

这就是说,如果您需要实现这一点,您将不得不使用一些签名的浏览器扩展

很多年前,我用签名Java小程序做过类似的事情

基本上,您可以创建一个Java小程序,使用证书对其进行签名,并从客户端请求某些权限。客户端用户允许或拒绝该权限,然后启动该进程

以下是一些古代资源:


如果授予权限,可以访问客户端计算机的其他技术包括Microsoft的ActiveX和Adobe的Flash/Flex/Air,但是我没有任何可以共享的技术经验。

Web服务器无法访问客户端计算机。想象一下,当你访问谷歌或其他任何网站时,他们是否可以在你的机器上启动程序

这就是说,如果您需要实现这一点,您将不得不使用一些签名的浏览器扩展

很多年前,我用签名Java小程序做过类似的事情

基本上,您可以创建一个Java小程序,使用证书对其进行签名,并从客户端请求某些权限。客户端用户允许或拒绝该权限,然后启动该进程

以下是一些古代资源:


如果授予权限,可以访问客户端计算机的其他技术包括Microsoft的ActiveX和Adobe的Flash/Flex/Air,但是我没有任何可以分享的技术经验。

Java web应用程序的代码在服务器计算机上运行,生成HTML/CSS/JS并将其发送到在客户端计算机上运行的webbrowser。Java代码不在客户机上运行,更不用说直接访问客户机环境了

如果你想在客户机上执行Java代码,你需要在一个签名的机器里执行!小程序,然后将其嵌入网页,然后下载到客户端计算机并在那里执行。然后,您可以直接使用,而不是那种丑陋的、特定于平台的rundll调用,这种调用在Linux/Mac客户机上是行不通的

Desktop.getDesktop().open(new File("/path/to/foo.txt")); // Opens notepad on Windows.
另见:
Java web应用程序的代码在服务器机器上运行,生成HTML/CSS/JS并将其发送给在客户端机器上运行的webbrowser。Java代码不在客户机上运行,更不用说直接访问客户机环境了

如果你想在客户机上执行Java代码,你需要在一个签名的机器里执行!小程序,然后将其嵌入网页,然后下载到客户端计算机并在那里执行。然后,您可以直接使用,而不是那种丑陋的、特定于平台的rundll调用,这种调用在Linux/Mac客户机上是行不通的

Desktop.getDesktop().open(new File("/path/to/foo.txt")); // Opens notepad on Windows.
另见:
如果您提供的代码片段是servlet的一部分,那么它将在服务器上执行。 在客户端打开文件的一种方法是生成一个客户端单击的超链接,然后您的web应用程序将接收到该超链接,并将该文件以http头中正确的MIME类型流回客户端浏览器。
用户可能会看到一个文件打开对话框,并被要求选择用于打开文件的应用程序,但只要应用程序安装在客户机上,MIME类型就应该默认显示正确的应用程序

如果您提供的代码片段是servlet的一部分,那么它将在服务器上执行。 在客户端打开文件的一种方法是生成一个客户端单击的超链接,然后您的web应用程序将接收到该超链接,并将该文件以http头中正确的MIME类型流回客户端浏览器。
用户可能会看到一个文件打开对话框,并被要求选择用于打开文件的应用程序,但只要应用程序安装在客户机上,MIME类型就应该默认显示正确的应用程序

不能从web应用程序在客户端运行任意命令。你可以做的是让用户下载一个通用格式的文件,当用户选择打开它时,它会通过Windows的相关应用程序机制在正确的应用程序中打开。什么是web应用程序?它是像servlet或JSP一样在服务器端运行,还是像applet一样在客户端运行?答案不清楚。它是如何复制文件的
e到客户端计算机?您不能从web应用程序在客户端运行任意命令。你可以做的是让用户下载一个通用格式的文件,当用户选择打开它时,它会通过Windows的相关应用程序机制在正确的应用程序中打开。什么是web应用程序?它是像servlet或JSP一样在服务器端运行,还是像applet一样在客户端运行?答案不清楚。它是如何将文件复制到客户机的?如果使用小程序方法,则需要注意与沙盒环境相关的权限问题。@crowne:这正是为什么我的答案中签名部分后面有感叹号的原因。谢谢各位,我非常感谢你们的及时回复。似乎我需要使用烧焦的小程序。我使用Java、Spring、Hibernate和JSP编写了这个web应用程序。此代码位于服务器端的ModelAndView HandlerRequest方法中。我想知道我是否创建了一个小程序,然后如何将它与我的WAR文件一起部署?只需将它放在JSP中的PublicWebContent中即可。无论如何,它必须对最终用户公开。如果使用小程序方法,则需要注意与沙盒环境相关的权限问题。@crowne:这就是为什么我的答案中签名部分后面有感叹号的原因。谢谢各位,我非常感谢你们的及时回复。似乎我需要使用烧焦的小程序。我使用Java、Spring、Hibernate和JSP编写了这个web应用程序。此代码位于服务器端的ModelAndView HandlerRequest方法中。我想知道我是否创建了一个小程序,然后如何将它与我的WAR文件一起部署?只需将它放在JSP中的PublicWebContent中即可。无论如何,它都需要对最终用户公开。