【发布时间】:2019-09-01 01:59:12
【问题描述】:
在我的 django 服务器端,我有一个文件,它从 s3 下载一些文件,然后将它们压缩在一起。然后我想将该 zip 文件发送到客户端并在客户端下载。但是,当我尝试在客户端打开 zip 文件时,我会收到 An error occurred while loading the archive
我在带有 django 后端和 react 前端的 Ubuntu 14.04 上运行。我尝试将文件作为 tar 文件传递,但这也不起作用。我还尝试了许多不同的方法将 zip 文件传递给 HTResponse,但我总是遇到同样的错误。现在为了让它工作,我只是想下载一个我在本地计算机上下载的 zip 文件。
我尝试了很多不同的 content_types,从 application/zip 到 octet/stream 和强制下载。
django 后端
zip_path = '/home/konstantin/Downloads/sup.zip'
content_path = mime.guess_type(zip_path)
with open(zip_path, 'rb') as zip_file:
response = HttpResponse(zip_file, content_type='application/zip')
response['Content-Length'] = str(os.stat(zip_path).st_size)
response['Content-Disposition'] = 'attachment; filename={}'.format('willthiswork.zip')
return response
react 前端(我们有一个将 python 更改为 js 的程序)。 ajax 调用的响应直接传递给这个方法。
def download(self,url):
data = __new__(Blob([url], {"type": "octet/stream"}))
csvURL = window.URL.createObjectURL(data)
tempLink = document.createElement('a')
tempLink.href = csvURL
tempLink.download = 'willthiswork.zip'
tempLink.click()
预期结果:Zip 文件在客户端下载并且可以打开 实际结果:Zip 文件下载,但无法打开。
【问题讨论】:
标签: javascript python django reactjs zip