尝试在zipfile周围使用Python Filewrapper时遇到问题。当我使用包装纸时,拉链生成正常,温度"如下。但是,当我实际下载zip时,我看到了
~/Downloads $ file data.zip
data.zip: empty
实际上,无法通过解压缩打开此zip(未找到中心目录签名)。 如果我将存档包装在filewrapper而不是tempfile中,我会得到
invalid file: <zipfile.ZipFile object at 0x103e4e940>
我对Filewrapper并不熟悉,代码中的打印功能似乎表明一切都可以正常构建存档。
有人可以指出这里可能出现的问题吗?
def send_zipfile(request):
temp = tempfile.TemporaryFile()
archive = zipfile.ZipFile(temp, 'w', zipfile.ZIP_DEFLATED)
dir = getGeneratedFilesDir()
files = [f for f in listdir(dir) if isfile(join(dir, f))]
for filename in files:
print(isfile(get_file(filename)), filename, get_file(filename).__sizeof__())
archive.write(get_file(filename), filename)
print(archive.namelist(), archive.__sizeof__())
wrapper = FileWrapper(temp)
archive.close()
response = HttpResponse(wrapper, content_type='application/zip')
response['Content-Disposition'] = 'attachment; filename=data.zip'
response['Content-Length'] = temp.tell()
temp.seek(0)
return response