Java JNLP FileSaveService在调用saveAsFileDialog方法时忽略给定的名称和扩展名
我需要在MAC上装载.dmg时传递命令行参数。为此,我使用了JNLP,它是使用JSP动态合成的,响应内容类型为Java JNLP FileSaveService在调用saveAsFileDialog方法时忽略给定的名称和扩展名,java,file-io,jnlp,java-web-start,savefiledialog,Java,File Io,Jnlp,Java Web Start,Savefiledialog,我需要在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>jn
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.JSP
太阳微系统公司。
使用我传递的参数正确调用JNLP
现在有两个问题进一步发展:
首先触发JNLP后,我的主类从FileSaveService
调用saveFileDialog
在用户系统上保存.dmg,但JNLP客户端(在MAC上打开的Save Dialog)在调用该方法时忽略了我传递的名称和扩展名。
我们如何使JNLP客户机尊重我传递的名称和扩展名
第二个,我如何知道用户保存.dmg的路径,以便以编程方式挂载它?了解用户保存文件的路径非常重要。我认为使用
FileSaveService
不可能做到这一点
saveFileDialog
的路径和扩展参数只是提示。实现可以随意忽略它们
FileContents.getName()
将只告诉您名称,而不告诉您目录。这是故意的。依赖FileSaveService
的JNLP应用程序被视为不受信任,路径可能是一个隐私问题。如果我选择将DMG文件保存在名为C:\Users\S\u Rushdie\My Documents\Porn
的目录中,我可能不希望您的程序将其包含在稍后上载到服务器的日志中
如果您需要更大的控制权,我认为您需要对应用程序进行签名,授予它
,并使用JFileChooser
和FileOutputStream
。+1,特别是对于目录名。这就是一切谢谢@finnw。我现在正在使用JFileChooser。@AndrewThompson只是一个一般性的查询,如果我们已经有了JFileChooser,为什么还要使用FileSaveService呢。我想你是最好的回答者this@Harshdeep适用于应用程序不可用的情况。不需要知道打开或保存资源的位置。像这样的情况很少发生。GIFanim既可以自由浮动,也可以嵌入。它可以加载帧并保存生成的动画GIF,并且完全是沙盒的。:)