Is there anyway I can zip dynamically generated content, such as a freshly rendered html template, into a zip file using zipfile?
There seem to be some examples arou
In addition to Schnouki's excellent answer, you can also pass ZipFile a file-like object, such as one created by StringIO.StringIO.
The working code: (for app engine:)
output = StringIO.StringIO()
z = zipfile.ZipFile(output,'w')
my_data = "<html><body><p>Hello, world!</p></body></html>"
z.writestr("hello.html", my_data)
z.close()
self.response.headers["Content-Type"] = "multipart/x-zip"
self.response.headers['Content-Disposition'] = "attachment; filename=test.zip"
self.response.out.write(output.getvalue())
Thanks again to Schnouki and Ryan.
You can add whatever you want to a zip file using ZipFile.writestr():
my_data = "<html><body><p>Hello, world!</p></body></html>"
z.writestr("hello.html", my_data)
You can also use sub-folders using /
(or os.sep
) as a separator:
z.writestr("site/foo/hello/index.html", my_data)