我想提供一个动态 zip 文件,其中包含存储在 blobstorage 中的多个用户上传的图像
我使用以下代码成功地做到了这一点,但我遇到了一个问题,即 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)
}
DIEA
相关分类