我想在我的服务器上打包许多文件并制作一个zip文件让人们从我的网站下载,一旦人们下载,该文件将被删除。
我在stackoverflow上搜索,找到一些主题,但没有一个符合我的要求。
这是我的代码:
file_name = 'temp.zip'
temp_zip_file = zipfile.ZipFile(file_name, 'w')
...do something and get the files...
for file in files:
temp_zip_file.write(name, arcname=name)
temp_zip_file.close()
response = HttpResponse(open(file_name, 'r').read(), mimetype='application/zip')
response['Content-Disposition'] = 'attachment; filename="%s"' % file_name
return response
我可以在哪里添加删除代码并自动删除?
非常感谢。
答案 0 :(得分:1)
您可以使用StringIO
代替真实文件。 StringIO是一个类似文件的字符串缓冲区。
import zipfile
from cStringIO import StringIO
s = StringIO()
temp_zip_file = zipfile.ZipFile(s, 'w')
# ...
temp_zip_file.close()
print s.getvalue()
所以在你的情况下你应该做这样的事情:
stream = StringIO()
temp_zip_file = zipfile.ZipFile(stream, 'w')
...do something and get the files...
for file in files:
temp_zip_file.write(name, arcname=name)
temp_zip_file.close()
response = HttpResponse(stream.getvalue(), mimetype='application/zip')
response['Content-Disposition'] = 'attachment; filename="temp.zip"'
return response