in golang/service/service.go [108:151]
func (f *FileFormReader) Read(p []byte) (n int, err error) {
if f.ifField {
n, err = f.formField.Read(p)
if err != nil && err != io.EOF {
return n, err
} else if err == io.EOF {
err = nil
f.ifField = false
f.streaming = true
}
} else if f.streaming {
form := f.formFiles[f.index]
if form.start {
n, err = form.StartField.Read(p)
if err != nil && err != io.EOF {
return n, err
} else if err == io.EOF {
err = nil
form.start = false
}
} else if form.end {
n, err = form.EndField.Read(p)
if err != nil && err != io.EOF {
return n, err
} else if err == io.EOF {
f.index++
form.end = false
if f.index < len(f.formFiles) {
err = nil
}
}
} else {
n, err = form.File.Read(p)
if err != nil && err != io.EOF {
return n, err
} else if err == io.EOF {
err = nil
form.end = true
}
}
}
return n, err
}