我正在尝试将zip文件发送到前端,以便可以在浏览器中下载。
Zip文件里面有一个文件夹,这些文件夹中有文件:
file.zip
- first folder
- file1.pdf
- file2.pdf
- second folder
- file3.pdf
我认为我需要首先将文件转换为字节以将其作为响应发送,所以我尝试这样做:
zip_file = ZipFile(zip_file_path)
zip_byte_array = bytearray()
for filename in zip_file.namelist():
byte_content = zip_file.read(filename)
zip_byte_array.append(byte_content)
return Response(zip_byte_array)
在附加到bytearray时出现以下错误:
an integer is required
该文件夹已存档如下:
zip_file_path = shutil.make_archive(dir_path, 'zip', dir_path)
我该如何解决这个问题?
答案 0 :(得分:4)
好的,事实证明它比我想象的要容易一些。我可以轻松地做到这一点:
zip_file = open(zip_file_path, 'rb')
response = HttpResponse(zip_file, content_type='application/zip')
response['Content-Disposition'] = 'attachment; filename=name.zip'
return response
答案 1 :(得分:0)
假设附加一个字节数组的整数将具有附加字节的值,因为append
主要被理解为向数组添加项的操作,{{1}是一个数字序列。
对于数组连接,只需使用bytearray
运算符,如字符串:
+