在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

07-24 15:16