在 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。
另请参阅此答案:/sf/answers/1980475381/