From c651727bab5d9d2ac1e106c37bb1d12a09a7f415 Mon Sep 17 00:00:00 2001 From: creamlike1024 Date: Fri, 31 Oct 2025 19:16:55 +0800 Subject: [PATCH] =?UTF-8?q?fix(adaptor):=20=E4=BF=AE=E5=A4=8D=E8=A7=A3?= =?UTF-8?q?=E6=9E=90multipart=E8=AF=B7=E6=B1=82=E6=97=B6=E8=8E=B7=E5=8F=96?= =?UTF-8?q?boundary=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- relay/channel/task/sora/adaptor.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/relay/channel/task/sora/adaptor.go b/relay/channel/task/sora/adaptor.go index d0bcc7111..1024bc190 100644 --- a/relay/channel/task/sora/adaptor.go +++ b/relay/channel/task/sora/adaptor.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" "io" + "mime" "mime/multipart" "net/http" "strings" @@ -129,7 +130,15 @@ func buildRequestBodyWithMappedModel(originalBody []byte, contentType, redirecte newBuffer := &bytes.Buffer{} writer := multipart.NewWriter(newBuffer) - r := multipart.NewReader(bytes.NewReader(originalBody), strings.TrimPrefix(contentType, "multipart/form-data; boundary=")) + _, params, err := mime.ParseMediaType(contentType) + if err != nil { + return nil, errors.Wrap(err, "parse_content_type_failed") + } + boundary, ok := params["boundary"] + if !ok { + return nil, errors.New("boundary_not_found_in_content_type") + } + r := multipart.NewReader(bytes.NewReader(originalBody), boundary) for { part, err := r.NextPart()