我的主要任务是让用户按下“下载”按钮并从查询目录下载文件“A.zip”。
我有一个elif request.POST .....的原因是因为我有另一个条件检查是否按下了“执行”按钮。此执行按钮运行脚本。两个POST操作都有效,dir_file是C:\ Data \ Folder。
我关注并阅读了许多关于如何从Django下载文件的教程和响应,我无法弄清楚为什么我的简单代码不会下载文件。
我错过了什么?代码不会返回任何错误。有没有人有任何文件可以解释我做错了什么?
我期待自动下载文件,但不会发生。
elif request.POST['action'] == 'Download':
query = request.POST['q']
dir_file = query + "A.zip"
zip_file = open(dir_file, 'rb')
response = HttpResponse(zip_file, content_type='application/zip')
response['Content-Disposition'] = 'attachment; filename=%s' % 'foo_zip'
zip_file.close()
答案 0 :(得分:0)
我找到了答案。
在阅读了很多关于此的文档之后,我忽略了此功能最重要的方面,即 url 。
基本上,函数download_zip由POST调用并运行下载zip的脚本。
这是我最终做的事情:
elif request.POST['action'] == 'Download':
return(HttpResponseRedirect('/App/download'))
创建了一个视图:
def download_zip(request):
zip_path = root + "A.zip"
zip_file = open(zip_path, 'rb')
response = HttpResponse(zip_file, content_type='application/zip')
response['Content-Disposition'] = 'attachment; filename=%s' % 'A.zip'
response['Content-Length'] = os.path.getsize(zip_path)
zip_file.close()
return response
最后在urls.py中:
url(r'^download/$', views.download_zip, name='download_zip'),