2013-04-22 74 views
1

我想爲多個用戶上傳的圖片動態zip文件存儲在blobstorage如何提供Blob存儲圖片的大型zip文件?

我successfuly用下面的代碼做這件事,但我遇到這樣的情況,因爲他們消耗的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) 
} 

回答

0

你或許應該建立在Blob存儲區中的zip文件,然後從那裏爲它服務:

拉鍊Blob存儲區創建ZIP

這樣,您也可以加速後續對相同zip/bundle的請求,因爲您已經創建/存儲它。