http://golang.org/src/pkg/net/http/request.go
为什么 ErrNotMultipart 时返回 nil?
mr, err := r.multipartReader()
767 if err == ErrNotMultipart {
768 return nil
769 } else if err != nil {
770 return err
771 }
就我而言,我的标题中有一个拼写错误
multipart/form-data, boundary=xxxx
上面应该有分号而不是逗号。现在,我跟踪了几个小时,因为我认为 ParseMultipartForm 成功处理了数据。
从代码来看,它可能有一个强有力的理由被强制为零。
(我在golang-nuts群上发布了同样的问题,但是当我向第一个协作者发布回复时,我的回复没有发布成功。所以,我认为stackoverflow是发布这个问题的更好工具)
最佳答案
我认为你一开始写信给 golang-nuts 而不是在这里就做得对。
这确实看起来像一个错误,因此应该在 issue tracker 中讨论或者 上golang nuts 。请注意,golang-nuts 受到审核,因此您的帖子不会出现 立即(这可能发生在你身上)。
作为解决方法,您可以使用 Request.MultipartReader
并自己阅读
(复制自 ParseMultipartForm
):
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可以找到特定代码行的审查 here 。测试似乎没有涵盖这个特定的解析错误。评价 甚至说:
On 2011/04/28 00:08:40, bradfitz wrote: I think you'll always return an error here for multipart forms. See comment above.
已修复。
block 引用>除了这个错误之外,几乎所有错误都已执行此操作。所以,正如我所说,我认为这是一个错误。
关于http - 当 ErrNotMultipart 时 ParseMultipartForm() 返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18628009/