Java 小程序可以打开“选择目录”吗?并通过 JavaScript 交互写入文件系统?
我正在寻找一种方法来保存在客户端计算机上使用 JavaScript 创建的几个文件。我希望他能够选择一个文件夹(类似于打开/保存文件夹对话框),然后在那里写入文件。这显然需要三件事:
- 能够弹出这样的对话框。
- 能够在客户端计算机上写入(签名的小程序?)
- 某种与 JavaScript 交互的方式,因为它知道要写入的文件名和内容。
这是可能的还是我应该停止梦想?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这当然是可能的。
一种方法是使用签名的小程序,但如果您的用户愿意升级到 Java 1.6.0_10+,则不需要签名的小程序。从 1.6.0_10(下一代 Java 插件)开始,JNLP API 服务可用于嵌入式小程序。这是一个 演示。 JNLP 文件服务。
我看到其他回复已经涵盖了applet/JS交互。
It sure is possible.
One way is to use a signed applet, but if your users are willing to upgrade to Java 1.6.0_10+, a signed applet is not needed. Since 1.6.0_10 (the Next Generation Java Plug-In), JNLP API services are available to embedded applets. Here is a demo. of the JNLP file services.
I see the other reply has already covered the applet/JS interaction.
这可以通过签名的小程序实现。
我可能会反过来做,让 javascript 代码将所有数据传递给小程序,小程序应该打开一个
FileDialog
并写入文件。从java调用javascript可以通过 `JSObject 来实现,调用Java 此处解释了来自 Javascript 的内容
It is possible with a signed applet.
I'd probably do it the other way around, let the javascript code pass all the data to the applet and the applet should open a
FileDialog
and write the file.Calling javascript from java can be achieved via `JSObject, calling Java from Javascript is explained here
如果您的小程序已签名,您就可以执行常规应用程序中可以执行的所有操作。您可以打开“文件对话框”,但它将是 Java 的对话框,与用户按下标签
的“浏览”按钮时打开的对话框不同。显然签名的小程序可以对用户的磁盘进行读写操作。所有小程序(无论是签名还是未签名)都可以使用
JSObject
调用 javascript。您只需在小程序标签中输入 MAYSCRIPT="true" 即可。我认为您无法打开浏览器的“文件打开”对话框小程序。实际上你甚至无法使用常规的 javascript 打开它。 (我很高兴知道我在这一点上错了,但我花了一些时间尝试这样做但失败了)。
If your applet is signed you can do everything that you can do in regular application. You can open "File dialog" but it will be the Java's dialog, not the same that is opened when user pushes "browse" button of tag
<intput type"file"/>
. Obviously signed applet can perform read and write operations with user's disk.All applets (either signed or unsigned) may call javascript using
JSObject
. You just have to say MAYSCRIPT="true" into applet tag.I think that you cannot open the browser's "file open" dialog applet. Actually you even cannot open it using regular javascript. (I'd be happy to know that I am wrong at this point but I spent some time trying to do this and failed).