From b6409898a66847b4d9b4761f7791323d1893b887 Mon Sep 17 00:00:00 2001 From: Cold <16419454+cold502@user.noreply.gitee.com> Date: Mon, 22 Dec 2025 20:05:01 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9F=A5=E8=AF=86=E5=BA=93=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ragflow/document.go | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/ragflow/document.go b/ragflow/document.go index 2fee990..823f26e 100644 --- a/ragflow/document.go +++ b/ragflow/document.go @@ -5,11 +5,11 @@ package ragflow import ( "bytes" "context" + "mime/multipart" "strings" "github.com/gogf/gf/v2/encoding/gjson" "github.com/gogf/gf/v2/errors/gerror" - "github.com/gogf/gf/v2/frame/g" ) // 数据集内文件管理 @@ -158,16 +158,34 @@ func (c *Client) UploadDocumentFromText(ctx context.Context, datasetId, content, // 构造URL url := c.BaseURL + "/api/v1/datasets/" + datasetId + "/documents" - // 使用gclient上传文本作为文件 + // 创建multipart writer + body := &bytes.Buffer{} + writer := multipart.NewWriter(body) + + // 添加文件字段 + part, err := writer.CreateFormFile("file", filename) + if err != nil { + return "", gerror.Wrap(err, "创建form file失败") + } + + // 写入内容 + if _, err = part.Write([]byte(content)); err != nil { + return "", gerror.Wrap(err, "写入文件内容失败") + } + + // 关闭multipart writer + if err = writer.Close(); err != nil { + return "", gerror.Wrap(err, "关闭multipart writer失败") + } + + // 发送请求 client := c.HTTPClient.Clone() client.SetHeader("Authorization", "Bearer "+c.APIKey) + client.SetHeader("Content-Type", writer.FormDataContentType()) - // 使用ContentType方法上传multipart表单 - resp, err := client.Post(ctx, url, g.Map{ - "file": bytes.NewReader([]byte(content)), - }) + resp, err := client.Post(ctx, url, body.Bytes()) if err != nil { - return "", err + return "", gerror.Wrap(err, "上传文档请求失败") } defer resp.Close()