我有一个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});
});
答案 0 :(得分:4)
为了让它下载,您需要传递正确的标题,并将实际的页面位置设置为新地址,就好像您正在正确地更改页面一样。
我认为您无法通过AJAX调用启动下载。如果它开始下载,它将不会改变页面。
将参数作为GET调用,或创建表单并提交。
window.location = '/actions/?action=download&item=' + current;
答案 1 :(得分:2)
您需要通过设置window.location
来触发正常下载,以导航到该网址
您无法通过AJAX触发下载。