diff --git a/dataflow/dataflow_test.go b/dataflow/dataflow_test.go index 3802ff2..d6bae85 100644 --- a/dataflow/dataflow_test.go +++ b/dataflow/dataflow_test.go @@ -125,7 +125,7 @@ func TestDataflow_Xml(t *testing.T) { func TestDataflow_Multipart(t *testing.T) { df := InitBaseDataflow() - df.Multipart(func(multipart MultipartDataflow) { + df.Multipart(func(multipart MultipartDataflow) error { mpDataflow := NewMultipartHelper() mpDataflow.Boundary("test-boundary") mpDataflow.FieldValue("param1", "value1") @@ -134,6 +134,7 @@ func TestDataflow_Multipart(t *testing.T) { if mpDataflow.Err() != nil { t.Error(mpDataflow.Err()) } + return nil }) if df.Err() != nil { diff --git a/dataflow/multipart.go b/dataflow/multipart.go index 383ef00..2e21923 100644 --- a/dataflow/multipart.go +++ b/dataflow/multipart.go @@ -39,15 +39,7 @@ func (m *MultipartDf) FileByPath(fieldName string, filePath string) MultipartDat _, fileName := path.Split(filePath) writer, err := m.mWriter.CreateFormFile(fieldName, fileName) - if err != nil { - m.errs = append(m.errs, errors.Wrap(err, "create file part failed")) - } - var buf bytes.Buffer - _, err = buf.ReadFrom(file) - if err != nil { - m.errs = append(m.errs, errors.Wrap(err, "create file part failed")) - } - _, err = buf.WriteTo(writer) + _, err = io.Copy(writer, file) if err != nil { m.errs = append(m.errs, errors.Wrap(err, "create file part failed")) } @@ -59,12 +51,7 @@ func (m *MultipartDf) FileMem(fieldName string, fileName string, reader io.Reade if err != nil { m.errs = append(m.errs, errors.Wrap(err, "create file part failed")) } - var buf bytes.Buffer - _, err = buf.ReadFrom(reader) - if err != nil { - m.errs = append(m.errs, errors.Wrap(err, "create file part failed")) - } - _, err = buf.WriteTo(writer) + _, err = io.Copy(writer, reader) if err != nil { m.errs = append(m.errs, errors.Wrap(err, "create file part failed")) } @@ -77,16 +64,9 @@ func (m *MultipartDf) Part(header textproto.MIMEHeader, reader io.Reader) Multip m.errs = append(m.errs, errors.Wrap(err, "create part failed")) return m } - var buf bytes.Buffer - _, err = buf.ReadFrom(reader) + _, err = io.Copy(writer, reader) if err != nil { - m.errs = append(m.errs, errors.Wrap(err, "create part read failed")) - return m - } - _, err = buf.WriteTo(writer) - if err != nil { - m.errs = append(m.errs, errors.Wrap(err, "create part write failed")) - return m + m.errs = append(m.errs, errors.Wrap(err, "create file part failed")) } return m } @@ -105,16 +85,9 @@ func (m *MultipartDf) Field(fieldName string, reader io.Reader) MultipartDataflo m.errs = append(m.errs, errors.Wrap(err, "create field failed")) return m } - var buf bytes.Buffer - _, err = buf.ReadFrom(reader) + _, err = io.Copy(writer, reader) if err != nil { - m.errs = append(m.errs, errors.Wrap(err, "create field read failed")) - return m - } - _, err = buf.WriteTo(writer) - if err != nil { - m.errs = append(m.errs, errors.Wrap(err, "create field write failed")) - return m + m.errs = append(m.errs, errors.Wrap(err, "create file part failed")) } return m } diff --git a/example_test.go b/example_test.go index e24bbcd..0ca6020 100644 --- a/example_test.go +++ b/example_test.go @@ -161,13 +161,14 @@ func TestRequestHelper_Df_Multipart(t *testing.T) { _, err = helper.Df().Method(http.MethodPost). Url("https://typedwebhook.tools/webhook"). - Multipart(func(multipart dataflow.MultipartDataflow) { + Multipart(func(multipart dataflow.MultipartDataflow) error { data := strings.NewReader("test data") multipart.Boundary("test-boundary"). //FileByPath("file", "README.md"). FieldValue("param1", "value1"). FieldValue("param2", "value2"). Field("data", data) + return nil }).Request() if err != nil {