mirror of https://github.com/golang/go.git
allow MultipartReader() to process multipart/mixed
This commit is contained in:
parent
ac81c5c402
commit
885ff1d9c9
|
|
@ -411,7 +411,7 @@ var multipartByReader = &multipart.Form{
|
|||
}
|
||||
|
||||
// MultipartReader returns a MIME multipart reader if this is a
|
||||
// multipart/form-data POST request, else returns nil and an error.
|
||||
// multipart/form-data or a multipart/mixed POST request, else returns nil and an error.
|
||||
// Use this function instead of ParseMultipartForm to
|
||||
// process the request body as a stream.
|
||||
func (r *Request) MultipartReader() (*multipart.Reader, error) {
|
||||
|
|
@ -422,16 +422,16 @@ func (r *Request) MultipartReader() (*multipart.Reader, error) {
|
|||
return nil, errors.New("http: multipart handled by ParseMultipartForm")
|
||||
}
|
||||
r.MultipartForm = multipartByReader
|
||||
return r.multipartReader()
|
||||
return r.multipartReader(true)
|
||||
}
|
||||
|
||||
func (r *Request) multipartReader() (*multipart.Reader, error) {
|
||||
func (r *Request) multipartReader(allowMixed bool) (*multipart.Reader, error) {
|
||||
v := r.Header.Get("Content-Type")
|
||||
if v == "" {
|
||||
return nil, ErrNotMultipart
|
||||
}
|
||||
d, params, err := mime.ParseMediaType(v)
|
||||
if err != nil || d != "multipart/form-data" {
|
||||
if err != nil || d != "multipart/form-data" || (allowMixed && d != "multipart/mixed") {
|
||||
return nil, ErrNotMultipart
|
||||
}
|
||||
boundary, ok := params["boundary"]
|
||||
|
|
@ -1207,7 +1207,7 @@ func (r *Request) ParseMultipartForm(maxMemory int64) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
mr, err := r.multipartReader()
|
||||
mr, err := r.multipartReader(false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue