2011-02-27 45 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下载。