golang - 上传大文件的函数

Car*_*rlo 0 forms upload go

在 go 中,有不同的方法来读取以多部分形式发送的文件

r.FormFile("file")

r.MultipartReader()

r.ParseMultipartForm(size)

我部分理解它们之间的区别,但是哪一个最适合处理大文件(~1GB)?

而且,哪一个使用的内存更少?

eli*_*rar 5

https://golang.org/pkg/net/http/#Request.ParseMultipartForm

ParseMultipartForm 将请求正文解析为 multipart/form-data。整个请求主体被解析,其文件部分的总共 maxMemory 字节存储在内存中,其余部分存储在磁盘上的临时文件中。如果需要,ParseMultipartForm 会调用 ParseForm。一次调用 ParseMultipartForm 后,后续调用无效。

因此,您可以通过调用来控制最大内存使用量r.ParseMultipartForm(max),并且可以通过使用来控制从请求读取的总量http.MaxBytesReader

另请参阅此答案:/sf/answers/1980475381/