【发布时间】:2016-07-15 06:01:10
【问题描述】:
在 go 中有不同的方法来读取以多部分形式发送的文件
r.FormFile("file")
r.MultipartReader()
r.ParseMultipartForm(size)
我部分了解它们之间的区别,但是哪个最适合处理大文件(~1GB)?
那么,哪个内存占用少?
【问题讨论】:
在 go 中有不同的方法来读取以多部分形式发送的文件
r.FormFile("file")
r.MultipartReader()
r.ParseMultipartForm(size)
我部分了解它们之间的区别,但是哪个最适合处理大文件(~1GB)?
那么,哪个内存占用少?
【问题讨论】:
https://golang.org/pkg/net/http/#Request.ParseMultipartForm
ParseMultipartForm 将请求正文解析为 multipart/form-data。 整个请求正文被解析,其文件部分的最多 maxMemory 字节存储在内存中,其余部分存储在磁盘中的临时文件中。 ParseMultipartForm 在必要时调用 ParseForm。一次调用 ParseMultipartForm 后,后续调用无效。
因此,您可以通过调用r.ParseMultipartForm(max) 来控制最大内存使用量,并且可以通过使用http.MaxBytesReader 来控制从请求中读取的总量。
【讨论】: