2016-03-28 6 views
0

In gehen gibt es verschiedene Möglichkeiten, eine Datei mit einer mehrteiligen Formgolang - die großen Dateien für das Hochladen funktioniert

r.FormFile("file")

r.MultipartReader()

r.ParseMultipartForm(size)

und ich teilweise verstehen, die geschickt zu lesen Unterschied zwischen ihnen, aber was ist das Beste für die Handhabung großer Dateien (~ 1 GB)?

Und welches ist derjenige, der weniger Speicher verbraucht?

Antwort

3

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

ParseMultipartForm parst eine Anfrage Körper als mehrteiliger/Form-Daten. Der gesamte Anforderungshauptteil wird geparst und bis zu insgesamt maxMemory-Bytes seiner Dateiteile werden im Speicher gespeichert, wobei der Rest in temporären Dateien auf der Festplatte gespeichert wird. ParseMultipartForm ruft ParseForm bei Bedarf auf. Nach einem Aufruf von ParseMultipartForm haben nachfolgende Aufrufe keine Auswirkung.

Sie können also die maximale Speichernutzung steuern, indem r.ParseMultipartForm(max) Aufruf, und Sie können den Gesamtbetrag aus der Anforderung gelesen steuern, indem http.MaxBytesReader verwenden.

Siehe auch diese Antwort: https://stackoverflow.com/a/28292505/556573

Verwandte Themen