我有一个 Django 脚本,它可以压缩服务器上的文件,并在将查询发送到服务器时将压缩文件发送出去。但是,zip 文件以“download”而不是 data.ZIP 的名称继续下载,data.ZIP 是指定名称的内容。任何想法为什么?我的代码如下。提前致谢!我省略了导入一些图像和 html 的部分代码,因为我不认为它们是问题的一部分,但如有必要,我可以提供。
from django.http import HttpResponse
from django.core.servers.basehttp import FileWrapper
import urlparse
from urllib2 import urlopen
from urllib import urlretrieve
import os
import sys
import zipfile
import tempfile
import StringIO
def index(req):
temp = tempfile.TemporaryFile()
archive = zipfile.ZipFile(temp, 'w', zipfile.ZIP_DEFLATED)
# Open StringIO to grab in-memory ZIP contents
s = StringIO.StringIO()
fileList = os.listdir('/tmp/images')
fileList = ['/tmp/images/'+filename for filename in fileList]
# The zip compressor
zip = zipfile.ZipFile(s, "w")
for file in fileList:
archive.write(file, os.path.basename(file))
zip.close()
archive.close()
wrapper = FileWrapper(temp)
#Get zip file, set as attachment, get file size, set mime type
resp = HttpResponse(wrapper, mimetype = "application/octet-stream")
resp['Content-Disposition'] = 'attachment; filename="data.ZIP"'
resp['Content-Length'] = temp.tell()
temp.seek(0)
return resp
添加的图像显示网页,显示何时将 temp.seek(0) 添加到移动到开头。