blobstorage に保存されている複数のユーザーがアップロードした画像を含む動的 zip ファイルを提供したい
次のコードで問題なく実行できていますが、Appengine インスタンスがメモリを消費しすぎて終了するという問題が発生します。
このような zip ファイルを、メモリに保持せずにクライアントに直接ストリーミングして提供することは可能ですか? 別の解決策はありますか?
w.Header().Set("Content-Type", "application/zip")
w.Header().Set("Content-Disposition", "attachment;filename=photos.zip")
writer := zip.NewWriter(w)
defer writer.Close()
for _, key := range l.Files {
info, err := blobstore.Stat(c, appengine.BlobKey(key))
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
wr, err := writer.Create(info.Filename)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
reader := blobstore.NewReader(c, appengine.BlobKey(key))
io.Copy(wr, reader)
}