func MultiPartBody(paramName, filename string, fileRef io.Reader, params map[string]string) (body io.ReadWriter, contentType string, err error) {
	var part io.Writer

	body = &bytes.Buffer{}
	writer := multipart.NewWriter(body)

	if part, err = writer.CreateFormFile(paramName, filename); err == nil {

		if _, err = io.Copy(part, fileRef); err == nil {

			for key, val := range params {
				_ = writer.WriteField(key, val)
			}
			contentType = writer.FormDataContentType()
			writer.Close()
		}
	}
	return
}
func MultiPartBody(paramName, filename string, fileRef io.Reader, params map[string]string) (body io.ReadWriter, contentType string, err error) {
	var part io.Writer

	body = &bytes.Buffer{}
	writer := multipart.NewWriter(body)

	if part, err = writer.CreateFormFile(paramName, filename); err == nil {

		if _, err = io.Copy(part, fileRef); err == nil {

			for key, val := range params {
				_ = writer.WriteField(key, val)
			}
			contentType = writer.FormDataContentType()
			writer.Close()
		}
	}
	return
}
func MultiPartBody ( paramName , filename string , fileRef io . Reader , params map [ string ] string ) ( body io . ReadWriter , contentType string , err error ) { var part io . Writer body = & bytes . Buffer { } writer := multipart . NewWriter ( body ) if part , err = writer . CreateFormFile ( paramName , filename ) ; err == nil { if _ , err = io . Copy ( part , fileRef ) ; err == nil { for key , val := range params { _ = writer . WriteField ( key , val ) } contentType = writer . FormDataContentType ( ) writer . Close ( ) } } return }
//MultiPartBody -
MultiPartBody -