2011-02-27 47 views
3

我有一個Django響應發送文件給用戶,然後僅通過瀏覽器忽略。我怎樣才能打開文件保存對話框來保存呢?如何使用jQuery保存文件響應?

這裏是我的Django代碼:

mimetype = "application/x-unknown" 
file = somefilefromthedatabase 

response = HttpResponse(file, mimetype=mimetype) 
response["Content-Disposition"]= "attachment; filename=%s" % os.path.split(file.name)[1] 

return response 

當我訪問視圖中直接產生這種情況,將文件保存到數據庫中。當通過jQuery訪問它時,沒有任何反應。 jscode是在這裏:

$(".jp-download").click(function(){ 
    current=$("#download").data('current').find('.id').text(); 
    $.post('/actions/',{action:'download',item:current}); 
}); 

回答

4

爲了得到它來下載,你需要通過正確的頭,並設置實際的頁面位置到新的地址,因爲如果你是適當改變頁面。

我不認爲你可以通過一個AJAX調用啓動下載。如果它開始下載,它不會改變頁面。

要麼把這些參數作爲一個GET調用,或者創建一個表單並提交。

window.location = '/actions/?action=download&item=' + current; 
2

你需要通過設置window.location觸發一個正常的下載導航到該URL。
不能觸發通過AJAX下載。