code: func (o *PetUploadImageParams) BindRequest(r *http.Request, route *middleware.MatchedRoute) error {
  	var res []error
  
  	o.HTTPRequest = r
  
  	if err := r.ParseMultipartForm(32 << 20); err != nil {
  		if err != http.ErrNotMultipart {
  			return errors.New(400, "%v", err)
  		} else if err := r.ParseForm(); err != nil {
  			return errors.New(400, "%v", err)
  		}
  	}
  	fds := runtime.Values(r.Form)
  
  	fdAdditionalMetadata, fdhkAdditionalMetadata, _ := fds.GetOK("additionalMetadata")
  	if err := o.bindAdditionalMetadata(fdAdditionalMetadata, fdhkAdditionalMetadata, route.Formats); err != nil {
  		res = append(res, err)
  	}
  
  	file, fileHeader, err := r.FormFile("file")
  	if err != nil && err != http.ErrMissingFile {
  		res = append(res, errors.New(400, "reading file %q failed: %v", "file", err))
  	} else if err == http.ErrMissingFile {
  		// no-op for missing but optional file parameter
  	} else if err := o.bindFile(file, fileHeader); err != nil {
  		res = append(res, err)
  	} else {
  		o.File = &runtime.File{Data: file, Header: fileHeader}
  	}
  
  	rPetID, rhkPetID, _ := route.Params.GetOK("petId")
  	if err := o.bindPetID(rPetID, rhkPetID, route.Formats); err != nil {
  		res = append(res, err)
  	}
  
  	if len(res) > 0 {
  		return errors.CompositeValidationError(res...)
  	}
  	return nil
  }
docs: // BindRequest both binds and validates a request, it assumes that complex things implement a Validatable(strfmt.Registry) error interface
  // for simple values it will use straight method calls.
  //
  // To ensure default values, the struct must have been initialized with NewPetUploadImageParams() beforehand.