JNLP FileSaveService 忽略调用 saveAsFileDialog 方法时给出的名称和扩展名



在MAC上挂载.dmg时,我需要传递命令行参数,为此我使用了JNLP,它是使用JSP动态组合的,响应内容类型为application/x-java-jnlp-file。JSP的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://10.40.42.134:8080/TestJNLP/">
 <information>
    <title>jnlp.JSP</title>
    <vendor>Sun Microsystems, Inc.</vendor>
 </information>
 <resources>
    <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
    <jar href="lib/faren2.jar" main="true" />
 </resources>
 <application-desc name="Dynamic Tree Demo Application" main-class="org.Test" width="300" height="300">
    <argument><%=request.getParameter("arg1")%></argument>  
    <argument><%=request.getParameter("arg2")%></argument> 
 </application-desc>
 <security>
    <all-permissions/>
 </security>
</jnlp>

JNLP 是使用我传递的参数正确调用的。

现在有两个问题在进一步发展:

首先,在触发 JNLP 后,我的主类从 FileSaveService 调用saveFileDialog以将.dmg保存在用户系统上,但 JNLP 客户端(在 MAC 上打开的保存对话框)忽略了我在调用该方法时传递的名称和扩展名。我们如何使 JNLP 客户端尊重我传递的名称和扩展名?

其次,我如何知道用户保存.dmg的路径,以便以编程方式挂载它?知道用户保存文件的路径非常重要。

我认为这在FileSaveService是不可能的.

saveFileDialog的路径和扩展参数只是提示。 实现可以自由地忽略它们。

FileContents.getName()只会告诉您名称,而不会告诉您目录。 这是设计使然。 依赖于FileSaveService的 JNLP 应用被视为不受信任,路径可能是隐私问题。 如果我选择将DMG文件保存在名为C:UsersS_RushdieMy DocumentsPorn的目录中,我可能不希望您的程序将其包含在稍后上传到服务器的日志中。

如果您需要更大的控制权,我认为您需要对您的应用程序进行签名,授予它<all-permission/>并使用JFileChooserFileOutputStream

最新更新