2016-03-28 122 views
0

在去有不同的方式来读取具有多形式golang - 这上传大文件

r.FormFile("file")

r.MultipartReader()

r.ParseMultipartForm(size)

,我部分地理解发送文件功能它们之间的差异,然而这是处理大文件(〜1GB)的最佳选择?

而且,这是一个使用较少的内存?

回答

3

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

ParseMultipartForm解析请求体作为多部分/形式的数据。 解析整个请求体,并将其文件部分的总共maxMemory字节存储在内存中,其余部分存储在磁盘中的临时文件中。如有必要,ParseMultipartForm会调用ParseForm。在一次调用ParseMultipartForm后,后续调用不起作用。

可以因此通过调用r.ParseMultipartForm(max)控制最大内存使用情况,您可以通过使用http.MaxBytesReader控制从请求读取的总金额。

也看到这个答案:https://stackoverflow.com/a/28292505/556573