2011-09-30 29 views
1

我目前正在开发Flex3/blazeDS/Spring/Oracle项目。我的要求是在网格中显示来自外部FTP服务器的文件列表,用户可以选择单个文件或多个文件下载,如果用户选择多个文件,我应该在FTP服务器上打开文件并从FTP下载tar文件服务器到用户磁盘。根据我对Flex下载文件的理解,我们有两种方法可以做到这一点。 1)文件参考2)使用navigateURL和调用服务器端JSP/Servlets来下载文件。Flex文件下载

1)对于FileReference,我们需要首先下载数据并通过点击某个按钮提示用户保存文件。由于Flex中的安全原因(Workaround),我们不能提示没有单击事件的“保存”对话框。但我的客户讨厌这个过程,因为它的两个步骤,他只需要像一般文件下载一样只需“保存”对话。然后我尝试了第二种选择。

2)navigateURL。打开一个新窗口,向JSP/Servlet发出一个post url请求,并提示'Save'对话框。我在这里面临的问题是,下载完成后,弹出窗口不会关闭。 navigateURL不返回任何对窗口的引用来关闭窗口。我甚至尝试过不同的内容类型和头文件和Java脚本,但似乎没有任何工作。当窗口是单个文件而不是tar或zip文件时,窗口关闭。我想下载任何类型的下载弹出窗口。我正在使用IE7。

赞赏任何帮助或任何其他可能的解决方案。提前致谢。

回答

1

您可以使用隐藏的iframe。这样就没有弹出/新选项卡,只是“保存”对话框。

为此,您需要在页面上使用一些JavaScript。像这样的东西应该这样做:

<script language="JavaScript" type="text/javascript"> 
function makeFrame(theUrl) { 
    ifrm = document.createElement("IFRAME"); 
    ifrm.setAttribute("src", theUrl); 
    ifrm.style.width = 640+"px"; 
    ifrm.style.height = 480+"px"; 
    document.body.appendChild(ifrm); 
} 
</script> 

要呼叫的Flex功能使用ExternalInterface

+0

感谢您的宝贵回应。我需要使用用户选择的文件对JSP页面做出回应。如果我使用ExternalInterface这将是一个获取请求。请更新我与任何其他可能的解决方案。 –

+0

在将提交给iframe的页面上使用隐藏表单。更多信息在这里http://stackoverflow.com/questions/168455/how-do-you-post-to-an-iframe –

+0

使用ExternalInterface和JavaScript填写表格并提交 –