【发布时间】:2021-03-02 02:49:41
【问题描述】:
我有一个 zip 文件,当我在本地打开它时,它看起来很棒。我想将其转换为字节流buffer,然后使用django 将其作为HttpResponse(buffer) 返回。代码是,
studies_zip = zipfile.ZipFile('./studies.zip', 'r')
buffer = io.BytesIO()
bytes = [zipfile.Path(studies_zip, at=file.filename).read_bytes()
for file in studies_zip.infolist()]
buffer = io.BytesIO()
buffer_writer = io.BufferedWriter(buffer)
[buffer_writer.write(b) for b in bytes]
buffer.seek(0)
response = HttpResponse(buffer)
response['Content-Type'] = 'application/zip'
response['Content-Disposition'] = 'attachment;filename=studies.zip'
在前端/UI 我明白了,
看起来不错,即 34.9MB 的显示大小比实际的 36.6MB 小一点。此外,当我尝试当场或在本地保存文件后打开文件时,我得到
怎么了?
【问题讨论】:
-
顺便说一句,请不要将列表理解用于副作用:
[buffer_writer.write(b) for b in bytes]