golang - 用于上传大文件的功能

时间:2016-03-28 01:10:26

标签: forms go upload

在go中,有不同的方法来读取使用多部分表单发送的文件

r.FormFile("file")

r.MultipartReader()

r.ParseMultipartForm(size)

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

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

1 个答案:

答案 0 :(得分:3)

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