ParseMultipartForm() returning nil when ErrNotMultipart
http://golang.org/src/pkg/net/http/request.go
为什么在ErrNotMultipart时返回零?
1 2 3 4 5 6 | mr, err := r.multipartReader() 767 if err == ErrNotMultipart { 768 return nil 769 } else if err != nil { 770 return err 771 } |
在我的情况下,我的标头中有一个错字
1 | multipart/form-data, boundary=xxxx |
上面的内容应使用分号而不是逗号。现在,我已经追踪了几个小时,因为我认为ParseMultipartForm成功地处理了数据。
从代码的angular来看,将其强制为零可能是有充分理由的。
(我在golang-nuts组中发布了相同的问题,但是当我向第一个协作者发布回复时,我的回复未成功发布。因此,我认为stackoverflow是发布此问题的更好工具)
我认为您一开始就正确地写了golang-nuts而不是在这里。
这确实看起来像是个错误,因此应在问题跟踪器或
在golang坚果上。请注意,golang-nuts是经过审核的,因此您的帖子不会出现
立即(这可能发生在您身上)。
作为一种解决方法,您可以使用
(从
1 2 3 4 5 6 7 | mr, err := r.multipartReader() // don't forget to handle err f, err := mr.ReadForm(maxMemory) // don't forget to handle err for k, v := range f.Value { r.Form[k] = append(r.Form[k], v...) } r.MultipartForm = f |
从我可以从代码历史中推断出的内容来看,这完全被忽略了。这
更改是从2011年开始的,可以找到特定代码行的评论
这里。测试似乎并未涵盖此特定的解析错误。评价
甚至说:
On 2011/04/28 00:08:40, bradfitz wrote:
I think you'll always return an error here for multipart forms. See comment
above.已修复。
blockquote>
除此错误外,几乎所有错误均已完成。因此,正如我所说,我认为这是一个错误。