在go中,有不同的方法来读取使用多部分表单发送的文件
r.FormFile("file")
r.MultipartReader()
r.ParseMultipartForm(size)
我部分理解它们之间的区别,但是它最适合处理大文件(~1GB)?
并且,哪个使用更少的内存?
答案 0 :(得分:3)
https://golang.org/pkg/net/http/#Request.ParseMultipartForm
ParseMultipartForm将请求主体解析为multipart / form-data。 解析整个请求体,并将其文件部分的maxMemory字节总数存储在内存中,其余部分存储在磁盘上的临时文件中。 ParseMultipartForm在必要时调用ParseForm。在调用ParseMultipartForm之后,后续调用无效。
因此,您可以通过调用r.ParseMultipartForm(max)
来控制最大内存使用量,并且可以使用http.MaxBytesReader
控制从请求中读取的总金额。