Beego在input.go上使用func Request.ParseMultipartForm函数;然而Go不推荐它

时间:2017-01-10 07:28:36

标签: go beego

由于Beego中的ParseFormOrMulitForm功能,我收到了错误:

  

处理程序因错误http:multipart由ParseMultipartForm

处理而崩溃

Beego使用input.go中的Request.ParseMultipartForm函数。

// ParseFormOrMulitForm parseForm or parseMultiForm based on Content-type
func (input *BeegoInput) ParseFormOrMulitForm(maxMemory int64) error {
    // Parse the body depending on the content type.
    if strings.Contains(input.Header("Content-Type"), "multipart/form-data") {
        if err := input.Context.Request.ParseMultipartForm(maxMemory); err != nil {
            return errors.New("Error parsing request body:" + err.Error())
        }
    } else if err := input.Context.Request.ParseForm(); err != nil {
        return errors.New("Error parsing request body:" + err.Error())
    }
    return nil
}

但是,我发现Go不建议使用Request.ParseMultipartForm进行流处理。

https://golang.org/src/net/http/request.go

  

使用MultipartReader函数代替ParseMultipartForm将请求正文作为流处理。

362 // MultipartReader returns a MIME multipart reader if this is a
363 // multipart/form-data POST request, else returns nil and an error.
364 // Use this function instead of ParseMultipartForm to
365 // process the request body as a stream.
366 func (r *Request) MultipartReader() (*multipart.Reader, error) {
367     if r.MultipartForm == multipartByReader {
368         return nil, errors.New("http: MultipartReader called twice")
369     }
370     if r.MultipartForm != nil {
371         return nil, errors.New("http: multipart handled by ParseMultipartForm")
372     }
373     r.MultipartForm = multipartByReader
374     return r.multipartReader()
375 }
376 

如何解决?

0 个答案:

没有答案