< 0 {
maxValueBytes = 0
} else {
maxValueBytes = math.MaxInt64
}
}
for {
p, err := r.NextPart...()
if err == io.EOF {
break
}
if err !...= io.EOF {
return nil, err
}
// 这里判断读取的内容是否大于给定的最大字节
if n > maxMemory {
// too big, write...当文件大于给定的最大字节数时, 是怎么实现复制的功能
上面的代码中io.Copy(file, io.MultiReader(&b, p)), 我们来查看p和b的来源
首先b比较简单,就是从p中copy出来...因为读取Body的内容肯定是从上到下,文件可能在最前面,可能在最后面
代码只能一行一行的读取Body,如果第一个部分是文件, 并且太大的话只能先写到临时文件夹
读取完这一个部分,才能读取接下来的内容 PS