我正在发出一个jquery ajax POST请求,并将数据传递给Django框架中的后端python代码。我需要将zip文件作为httpresponse返回,应该在浏览器中自动下载。
object_body = request.body.decode('utf-8')
loaded_json = json.loads(object_body)
json_obj = ast.literal_eval(str(loaded_json))
zip_file_path = importexport.download(json_obj,user)
zip_filename = os.path.basename(zip_file_path)
with open(zip_file_path, 'rb') as zip:
response = HttpResponse(zip.read(), content_type = 'application/x-zip')
response['Content-Disposition'] = 'attachment; filename=' + zip_filename
return response
答案 0 :(得分:0)
一种解决方案:
将zip文件放入MEDIA_ROOT,然后重定向到其网址。
答案 1 :(得分:0)
如果您具有下载URL(将文件放入MEDIA_ROOT),则只需编写具有a
属性的download
标记,然后按以下代码片段所述单击“下载”,它将自动下载文件无需重定向。
<a href="https://github.com/vaibhavmule/vaibhavmule.github.io/archive/master.zip" download>Download</a>
答案 2 :(得分:0)
您不想使用 .read()
,只需使用filestream
,请尝试这样的操作
def report_generate(request):
filename = "mysample.zip"
f = open(filename, "rb")
response = HttpResponse(f, content_type='application/x-zip')
response['Content-Disposition'] = 'attachment; filename="%s"' % filename
return response