とにかく、新しくレンダリングされたhtmlテンプレートなど、動的に生成されたコンテンツをzipfileを使用してzipファイルに圧縮できますか?
静的コンテンツを圧縮する例はいくつかあるようですが、動的コンテンツを圧縮する例はありません。それとも、まったくできないのですか?
もう 1 つ質問があります。内部に多数のサブフォルダーを含む zip ファイルを作成することはできますか?
ありがとう。
とにかく、新しくレンダリングされたhtmlテンプレートなど、動的に生成されたコンテンツをzipfileを使用してzipファイルに圧縮できますか?
静的コンテンツを圧縮する例はいくつかあるようですが、動的コンテンツを圧縮する例はありません。それとも、まったくできないのですか?
もう 1 つ質問があります。内部に多数のサブフォルダーを含む zip ファイルを作成することはできますか?
ありがとう。
作業コード: (アプリ エンジンの場合:)
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())
Schnouki と Ryan に再び感謝します。
以下を使用して、zipファイルに必要なものを追加できますZipFile.writestr()
。
my_data = "<html><body><p>Hello, world!</p></body></html>"
z.writestr("hello.html", my_data)
セパレータとして/
(または)を使用してサブフォルダを使用することもできます。os.sep
z.writestr("site/foo/hello/index.html", my_data)
Schnouki の優れた回答に加えて、 ZipFile にStringIO.StringIOによって作成されたようなファイルのようなオブジェクトを渡すこともできます。