Zipping dynamic files in App Engine (Python)

后端 未结 3 1439
孤街浪徒
孤街浪徒 2021-01-03 01:01

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

相关标签:
3条回答
  • 2021-01-03 01:16

    In addition to Schnouki's excellent answer, you can also pass ZipFile a file-like object, such as one created by StringIO.StringIO.

    0 讨论(0)
  • 2021-01-03 01:35

    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.

    0 讨论(0)
  • 2021-01-03 01:40

    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)
    
    0 讨论(0)
提交回复
热议问题