2016-03-28 33 views
0

bir çok parçalı formagolang -

r.FormFile("file")

r.MultipartReader()

r.ParseMultipartForm(size)

ve ben kısmen anlama ile gönderilen bir dosyayı okumak için farklı yolları vardır gitmek büyük dosyaları yüklemek için işlev aralarındaki fark, ancak büyük dosyaları (~ 1GB) ele almak için en iyisi bu mu?

Ve daha az bellek kullanan hangisidir?

cevap

3

https://golang.org/pkg/net/http/#Request.ParseMultipartForm

ParseMultipartForm parçalı/form veri olarak bir talep gövde ayrıştırır. İstek gövdesinin tamamı ayrıştırılır ve dosya parçalarının toplam MaksMemory baytları bellekte saklanır, kalan dosyalar geçici dosyalarda diskte depolanır. ParseMultipartForm, gerekirse ParseForm'u çağırır. ParseMultipartForm'a yapılan bir aramadan sonra, sonraki aramaların bir etkisi olmaz.

Bu nedenle r.ParseMultipartForm(max) arayarak maksimum bellek kullanımını kontrol edebilir ve http.MaxBytesReader kullanarak istek okunan toplam tutarını kontrol edebilirsiniz. Ayrıca şu cevaba bakınız: https://stackoverflow.com/a/28292505/556573