在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
来控制从请求中读取的总量。
另请参阅以下答案:https://stackoverflow.com/a/28292505/556573