如何使用jQuery保存文件响应?

时间:2011-02-27 20:16:32

标签: jquery django

我有一个django响应向用户发送文件,然后浏览器忽略该文件。如何打开文件对话框以保存它?

这是我的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});
});

2 个答案:

答案 0 :(得分:4)

为了让它下载,您需要传递正确的标题,并将实际的页面位置设置为新地址,就好像您正在正确地更改页面一样。

我认为您无法通过AJAX调用启动下载。如果它开始下载,它将不会改变页面。

将参数作为GET调用,或创建表单并提交。

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

答案 1 :(得分:2)

您需要通过设置window.location来触发正常下载,以导航到该网址 您无法通过AJAX触发下载。