2010-11-23 129 views
0

我寫了一個實際將圖像字節寫入響應的servlet。我可以通過提交表單來獲取或張貼到servlet來下載圖像。但是我怎樣才能在不離開頁面的情況下請求這個servlet呢?我試過jQuery.get("http://localhost:8080/mydownloadservlet")。請求正在servlet中收到,但圖像沒有得到下載。同樣使用表單提交。如何在不離開頁面的情況下下載圖片?

感謝, 阿米特·帕特爾

回答

3

以下工作。

創建隱藏的iframe。

<iframe src="" id="hiddenFrm" style="display:none;" frameborder="0"></iframe> 

並且使用jquery通過設置隱藏幀的src來下載圖像,如下所示。

function download(url){ 
    jQuery("#hiddenFrm").attr("src",url); 
} 
0

1)你必須正確設置HTTP頭:

Content-Disposition: attachment; filename=mypic.jpg 

2)您需要導航到該頁面,不做jQuery.get,但

<a href="http://localhost:8080/mydownloadservlet">Download pic</a> 

or in javascript

window.location = 'http://localhost:8080/mydownloadservlet'; 

如果一切按計劃進行,您應該離開該頁面。

3

Content-Disposition: attachment標頭添加到servlet響應中。這樣客戶端被迫彈出一個另存爲對話。

response.setHeader("Content-Disposition: attachment; filename=image.gif"); 

之前執行此寫入到響應的任何字節。你不需要爲此在客戶端的任何JavaScript。只是指向servlet的鏈接或表單。由於內容處置未設置爲inline,客戶端不會離開頁面。然而

你仍然依賴於客戶端的默認配置中是否有與將被執行的,而不是立即另存爲附件的Content-Type關聯的默認操作。以Firefox爲例,這可通過工具>選項>應用程序進行配置。你無法從服務器端控制這個,但你不應該擔心這一點。客戶決定自己這樣做。

相關問題