2011-09-30 57 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填寫表格並提交 –