"use strict";(self.webpackChunkelementary_public_docs=self.webpackChunkelementary_public_docs||[]).push([[2566],{15680:(e,n,a)=>{a.d(n,{xA:()=>d,yg:()=>m});var t=a(96540);function r(e,n,a){return n in e?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a,e}function s(e,n){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),a.push.apply(a,t)}return a}function l(e){for(var n=1;n=0||(r[a]=e[a]);return r}(e,n);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=t.createContext({}),p=function(e){var n=t.useContext(o),a=n;return e&&(a="function"==typeof e?e(n):l(l({},n),e)),a},d=function(e){var n=p(e.components);return t.createElement(o.Provider,{value:n},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},f=t.forwardRef((function(e,n){var a=e.components,r=e.mdxType,s=e.originalType,o=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=p(a),f=r,m=c["".concat(o,".").concat(f)]||c[f]||u[f]||s;return a?t.createElement(m,l(l({ref:n},d),{},{components:a})):t.createElement(m,l({ref:n},d))}));function m(e,n){var a=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var s=a.length,l=new Array(s);l[0]=f;var i={};for(var o in n)hasOwnProperty.call(n,o)&&(i[o]=n[o]);i.originalType=e,i[c]="string"==typeof e?e:r,l[1]=i;for(var p=2;p{a.r(n),a.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>u,frontMatter:()=>s,metadata:()=>i,toc:()=>p});var t=a(58168),r=(a(96540),a(15680));const s={sidebar_position:15},l="\u4e0a\u4f20\u6587\u4ef6",i={unversionedId:"model-as-a-service/AI_Studio/API/RAG_openapi/job/upload-files",id:"model-as-a-service/AI_Studio/API/RAG_openapi/job/upload-files",title:"\u4e0a\u4f20\u6587\u4ef6",description:"\u4e0a\u4f20\u6587\u4ef6\u6d41\u7a0b\u8bf4\u660e\uff1a",source:"@site/docs/model-as-a-service/AI_Studio/API/RAG_openapi/job/upload-files.md",sourceDirName:"model-as-a-service/AI_Studio/API/RAG_openapi/job",slug:"/model-as-a-service/AI_Studio/API/RAG_openapi/job/upload-files",permalink:"/help/docs/model-as-a-service/AI_Studio/API/RAG_openapi/job/upload-files",draft:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/model-as-a-service/AI_Studio/API/RAG_openapi/job/upload-files.md",tags:[],version:"current",sidebarPosition:15,frontMatter:{sidebar_position:15},sidebar:"tutorialSidebar",previous:{title:"\u521b\u5efa\u77e5\u8bc6\u5bfc\u5165\u4efb\u52a1",permalink:"/help/docs/model-as-a-service/AI_Studio/API/RAG_openapi/job/create-job"},next:{title:"\u542f\u52a8\u77e5\u8bc6\u5bfc\u5165\u4efb\u52a1",permalink:"/help/docs/model-as-a-service/AI_Studio/API/RAG_openapi/job/start-job"}},o={},p=[{value:"\u666e\u901a\u4e0a\u4f20",id:"\u666e\u901a\u4e0a\u4f20",level:2},{value:"1\uff09\u83b7\u53d6\u9884\u7b7e\u540d\u7684URL",id:"1\u83b7\u53d6\u9884\u7b7e\u540d\u7684url",level:3},{value:"\u54cd\u5e94\u793a\u4f8b",id:"\u54cd\u5e94\u793a\u4f8b",level:4},{value:"2\uff09\u4e0a\u4f20\u6587\u4ef6",id:"2\u4e0a\u4f20\u6587\u4ef6",level:3},{value:"\u5206\u7247\u4e0a\u4f20",id:"\u5206\u7247\u4e0a\u4f20",level:2},{value:"1\uff09\u83b7\u53d6\u5927\u6587\u4ef6\u5206\u7247\u4e0a\u4f20\u7684\u9884\u7b7e\u540d\u7684URL",id:"1\u83b7\u53d6\u5927\u6587\u4ef6\u5206\u7247\u4e0a\u4f20\u7684\u9884\u7b7e\u540d\u7684url",level:3},{value:"\u54cd\u5e94\u793a\u4f8b",id:"\u54cd\u5e94\u793a\u4f8b-1",level:4},{value:"2\uff09\u672c\u5730\u6587\u4ef6\u4e0a\u4f20",id:"2\u672c\u5730\u6587\u4ef6\u4e0a\u4f20",level:3},{value:"3\uff09 \u5b8c\u6210\u5206\u7247\u4e0a\u4f20",id:"3-\u5b8c\u6210\u5206\u7247\u4e0a\u4f20",level:3}],d={toc:p},c="wrapper";function u(e){let{components:n,...a}=e;return(0,r.yg)(c,(0,t.A)({},d,a,{components:n,mdxType:"MDXLayout"}),(0,r.yg)("h1",{id:"\u4e0a\u4f20\u6587\u4ef6"},"\u4e0a\u4f20\u6587\u4ef6"),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"\u4e0a\u4f20\u6587\u4ef6\u6d41\u7a0b\u8bf4\u660e"),"\uff1a"),(0,r.yg)("p",null,"\u4ee5\u4e0b\u63a5\u53e3\u7528\u4e8e\u672c\u5730\u6587\u4ef6\u7684\u6587\u4ef6\u4e0a\u4f20\uff0c\u90fd\u9700\u8981\u5148\u901a\u8fc7\u63a5\u53e3\u83b7\u53d6\u9884\u7b7e\u540dURL\uff0c\u518d\u901a\u8fc7\u9884\u7b7e\u540dURL\u4e0a\u4f20\u672c\u5730\u6587\u4ef6\u3002\u4ee5\u4e0b\u53ef\u4ee5\u5206\u4e3a\u666e\u901a\u4e0a\u4f20\u548c\u5206\u7247\u4e0a\u4f20\u4e24\u79cd\u65b9\u5f0f"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("a",{parentName:"li",href:"#custom_normal_upload"},"\u666e\u901a\u4e0a\u4f20"),": \u4f7f\u7528",(0,r.yg)("a",{parentName:"li",href:"/help/docs/model-as-a-service/AI_Studio/API/RAG_openapi/job/batch-presign-upload-file-url"},"\u6279\u91cf\u9884\u7b7e\u540d\u4e0a\u4f20\u6587\u4ef6URL"),"\u63a5\u53e3\u53ef\u4ee5\u4e0a\u4f20\u591a\u4e2a\u6587\u4ef6 "),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("a",{parentName:"li",href:"#multipart_upload"},"\u5206\u7247\u4e0a\u4f20"),": \u4f7f\u7528",(0,r.yg)("a",{parentName:"li",href:"/help/docs/model-as-a-service/AI_Studio/API/RAG_openapi/job/presign-multipart-upload-file-url"},"\u9884\u7b7e\u540d\u5927\u6587\u4ef6\u5206\u7247\u4e0a\u4f20\u7684URL"),"\u63a5\u53e3\u53ef\u4ee5\u5206\u7247\u4e0a\u4f20\u5927\u6587\u4ef6, \u4e0a\u4f20\u5b8c\u9700\u8981\u8c03\u7528",(0,r.yg)("a",{parentName:"li",href:"/help/docs/model-as-a-service/AI_Studio/API/RAG_openapi/job/complete-multipart-upload-file"},"\u5b8c\u6210\u5927\u6587\u4ef6\u5206\u7247\u4e0a\u4f20"))),(0,r.yg)("h2",{id:"\u666e\u901a\u4e0a\u4f20"},"\u666e\u901a\u4e0a\u4f20"),(0,r.yg)("a",{id:"custom_normal_upload"}),(0,r.yg)("p",null,"\u4f7f\u7528",(0,r.yg)("a",{parentName:"p",href:"/help/docs/model-as-a-service/AI_Studio/API/RAG_openapi/job/batch-presign-upload-file-url"},"\u6279\u91cf\u9884\u7b7e\u540d\u4e0a\u4f20\u6587\u4ef6URL"),"\u4e0a\u4f20\u6587\u4ef6\uff0c\u9884\u7b7e\u540dURL\u5141\u8bb8\u5ba2\u6237\u7aef\u76f4\u63a5\u5c06\u6587\u4ef6\u4e0a\u4f20\u5230\u4e91\u5b58\u50a8\uff0c\u800c\u65e0\u9700\u7ecf\u8fc7\u4e2d\u95f4\u7684\u670d\u52a1\u5668\u3002"),(0,r.yg)("p",null,"\u4ee5\u4e0b\u662f\u4e0a\u4f20\u6587\u4ef6\u7684\u8be6\u7ec6\u6b65\u9aa4\uff1a"),(0,r.yg)("h3",{id:"1\u83b7\u53d6\u9884\u7b7e\u540d\u7684url"},"1\uff09\u83b7\u53d6\u9884\u7b7e\u540d\u7684URL"),(0,r.yg)("p",null,"\u4f7f\u7528",(0,r.yg)("a",{parentName:"p",href:"/help/docs/model-as-a-service/AI_Studio/API/RAG_openapi/job/batch-presign-upload-file-url"},"\u6279\u91cf\u9884\u7b7e\u540d\u4e0a\u4f20\u6587\u4ef6URL"),"\u63a5\u53e3\u83b7\u53d6\u591a\u4e2a\u6587\u4ef6\u7684\u4e0a\u4f20\u9884\u7b7e\u540dURL"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-shell"},'curl \'https://aidmp.cn-sh-01.sensecoreapi.cn/studio/rag/data/v1/jobs/b1d6104abf6b46288fd66439dd6cdbab/files:batchPresign\' \\\n -H \'authorization: Bearer eyJhbGciOiJSUz***\'\\\n --data-raw \'{"job_id":"b1d6104abf6b46288fd66439dd6cdbab","rel_path":["base/api/README.md", "test.sh"]}\'\n')),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"\u5176\u4e2d",(0,r.yg)("inlineCode",{parentName:"strong"},"rel_path"),"\u662f\u6587\u4ef6\u4e0a\u4f20\u5230\u77e5\u8bc6\u5e93\u4e2d\u7684\u76ee\u6807\u8def\u5f84")),(0,r.yg)("h4",{id:"\u54cd\u5e94\u793a\u4f8b"},"\u54cd\u5e94\u793a\u4f8b"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-shell"},'{\n "result": {\n "base/api/README.md": "https://aoss.cn-sh-01.sensecoreapi-oss.cn/rag-system/kn/datasets/rag_f269a87d61de42508a4c8d3ed0095e56/jobs/b1d6104abf6b46288fd66439dd6cdbab/base/api/README.md?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=7A7C633FEA733228360F10AEC8B9FBF3%2F20250102%2Fdefault%2Fs3%2Faws4_request&X-Amz-Date=20250102T094849Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&X-Amz-Signature=917067634b90308340bf109faf8faff6c13f889f5505a4a938f4f7c77a329a8c",\n "test.sh": "https://aoss.cn-sh-01.sensecoreapi-oss.cn/rag-system/kn/datasets/rag_f269a87d61de42508a4c8d3ed0095e56/jobs/b1d6104abf6b46288fd66439dd6cdbab/test.sh?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=7A7C633FEA733228360F10AEC8B9FBF3%2F20250102%2Fdefault%2Fs3%2Faws4_request&X-Amz-Date=20250102T094849Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&X-Amz-Signature=8540f54a85f224614c392fc901c121db23ca4bef49b7ca11173da803309f2814"\n }\n}\n')),(0,r.yg)("h3",{id:"2\u4e0a\u4f20\u6587\u4ef6"},"2\uff09\u4e0a\u4f20\u6587\u4ef6"),(0,r.yg)("p",null,"\u6839\u636e\u63a5\u53e3\u8fd4\u56de\u7684\u9884\u7b7e\u540dURL\uff0c\u6709\u591a\u79cd\u65b9\u5f0f\u53ef\u4ee5\u5c06\u672c\u5730\u6587\u4ef6\u4e0a\u4f20"),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"\u2714 \u4f7f\u7528 ",(0,r.yg)("inlineCode",{parentName:"strong"},"curl")," \u4e0a\u4f20\u6587\u4ef6")),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-shell"},'curl -X PUT -T local/test_txt.txt \\\n"https://aoss.cn-sh-01.sensecoreapi-oss.cn/rag-system/kn/datasets/rag_f269a87d61de42508a4c8d3ed0095e56/jobs/b1d6104abf6b46288fd66439dd6cdbab/base/api/README.md?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=7A7C633FEA733228360F10AEC8B9FBF3%2F20250102%2Fdefault%2Fs3%2Faws4_request&X-Amz-Date=20250102T094849Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&X-Amz-Signature=917067634b90308340bf109faf8faff6c13f889f5505a4a938f4f7c77a329a8c"\n')),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("strong",{parentName:"li"},(0,r.yg)("inlineCode",{parentName:"strong"},"local/test_txt.txt")),": \u672c\u5730\u6587\u4ef6\u7684\u8def\u5f84\uff0c\u786e\u4fdd\u8fd9\u4e2a\u8def\u5f84\u6307\u5411\u4f60\u8981\u4e0a\u4f20\u7684\u6587\u4ef6"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("strong",{parentName:"li"},(0,r.yg)("inlineCode",{parentName:"strong"},"https://aoss.cn...")),": ",(0,r.yg)("a",{parentName:"li",href:"/help/docs/model-as-a-service/AI_Studio/API/RAG_openapi/job/batch-presign-upload-file-url"},"\u6279\u91cf\u9884\u7b7e\u540d\u4e0a\u4f20\u6587\u4ef6URL"),"\u63a5\u53e3\u83b7\u53d6\u7684\u9884\u7b7e\u540dURL")),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"\u2714 \u4f7f\u7528 Python \u7684 ",(0,r.yg)("inlineCode",{parentName:"strong"},"requests")," \u5e93\u4e0a\u4f20\u6587\u4ef6")),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-python"},'import requests\n\ndef upload_file(file_path, presigned_url):\n """\n \u4e0a\u4f20\u6587\u4ef6\u5230\u6307\u5b9a\u7684\u9884\u7b7e\u540d URL\u3002\n """\n with open(file_path, "rb") as f:\n response = requests.put(presigned_url, data=f)\n response.raise_for_status()\n')),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"\u2714 \u4f7f\u7528 Go\u7684 ",(0,r.yg)("inlineCode",{parentName:"strong"},"net/http")," \u5e93\u4e0a\u4f20\u6587\u4ef6")),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-go"},'package main\n\nimport (\n "fmt"\n "io"\n "net/http"\n "os"\n)\n\nfunc uploadFile(filePath, presignedURL string) error {\n // \u6253\u5f00\u6587\u4ef6\n file, err := os.Open(filePath)\n if err != nil {\n return fmt.Errorf("failed to open file: %w", err)\n }\n defer file.Close()\n\n // \u83b7\u53d6\u6587\u4ef6\u4fe1\u606f\n fileInfo, err := file.Stat()\n if err != nil {\n return fmt.Errorf("failed to get file info: %w", err)\n }\n\n // \u521b\u5efa HTTP \u8bf7\u6c42\n req, err := http.NewRequest("PUT", presignedURL, file)\n if err != nil {\n return fmt.Errorf("failed to create request: %w", err)\n }\n\n // \u8bbe\u7f6e Content-Length\n req.ContentLength = fileInfo.Size()\n\n // \u8bbe\u7f6e\u5fc5\u8981\u7684 Headers\n req.Header.Set("Content-Type", "application/octet-stream")\n\n // \u6267\u884c\u8bf7\u6c42\n client := &http.Client{}\n resp, err := client.Do(req)\n if err != nil {\n return fmt.Errorf("failed to execute request: %w", err)\n }\n defer resp.Body.Close()\n\n // \u68c0\u67e5\u54cd\u5e94\u72b6\u6001\n if resp.StatusCode != http.StatusOK {\n body, _ := io.ReadAll(resp.Body)\n return fmt.Errorf("upload failed, status: %s, body: %s", resp.Status, body)\n }\n\n fmt.Println("File uploaded successfully!")\n return nil\n}\n\nfunc main() {\n // \u6587\u4ef6\u8def\u5f84\n filePath := "/Users/konglingzhi/base/app/test_txt.txt"\n\n // \u9884\u7b7e\u540d URL\n presignedURL := "https://aoss.cn-sh-01.sensecoreapi-oss.cn/rag-system/kn/datasets/rag_f269a87d61de42508a4c8d3ed0095e56/jobs/b1d6104abf6b46288fd66439dd6cdbab/base/api/README.md?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=7A7C633FEA733228360F10AEC8B9FBF3%2F20250102%2Fdefault%2Fs3%2Faws4_request&X-Amz-Date=20250102T094849Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&X-Amz-Signature=917067634b90308340bf109faf8faff6c13f889f5505a4a938f4f7c77a329a8c"\n\n // \u4e0a\u4f20\u6587\u4ef6\n if err := uploadFile(filePath, presignedURL); err != nil {\n fmt.Printf("Error uploading file: %v\\n", err)\n }\n}\n')),(0,r.yg)("blockquote",null,(0,r.yg)("p",{parentName:"blockquote"},(0,r.yg)("strong",{parentName:"p"},"\u6ce8\u610f\u4e8b\u9879\uff1a")),(0,r.yg)("ul",{parentName:"blockquote"},(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("strong",{parentName:"li"},"\u9884\u7b7e\u540dURL\u7684\u6709\u6548\u671f"),"\uff1a\u9884\u7b7e\u540dURL\u901a\u5e38\u6709\u65f6\u95f4\u9650\u5236\uff0c\u9700\u5728\u6709\u6548\u671f\u5185\u4f7f\u7528\u3002"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("strong",{parentName:"li"},"\u6587\u4ef6\u5927\u5c0f\u9650\u5236"),"\uff1a\u786e\u4fdd\u4e0a\u4f20\u7684\u6587\u4ef6\u5927\u5c0f\u7b26\u5408\u9884\u7b7e\u540dURL\u7684\u9650\u5236\u3002"))),(0,r.yg)("p",null,"\u901a\u8fc7\u4ee5\u4e0a\u6b65\u9aa4\uff0c\u4f60\u53ef\u4ee5\u4f7f\u7528\u9884\u7b7e\u540dURL\u5c06\u6587\u4ef6\u4e0a\u4f20\u5230\u6307\u5b9a\u7684\u4e91\u5b58\u50a8\u670d\u52a1\u3002"),(0,r.yg)("h2",{id:"\u5206\u7247\u4e0a\u4f20"},"\u5206\u7247\u4e0a\u4f20"),(0,r.yg)("a",{id:"multipart_upload"}),(0,r.yg)("p",null,"\u4f7f\u7528",(0,r.yg)("a",{parentName:"p",href:"/help/docs/model-as-a-service/AI_Studio/API/RAG_openapi/job/presign-multipart-upload-file-url"},"\u9884\u7b7e\u540d\u5927\u6587\u4ef6\u5206\u7247\u4e0a\u4f20\u7684URL"),"\u63a5\u53e3\u83b7\u53d6\u5230\u9884\u7b7e\u540d\u7684\u5927\u6587\u4ef6\u5206\u7247\u4e0a\u4f20\u7684URL\uff0c\u5e76\u901a\u8fc7\u4ee5\u4e0b\u6b65\u9aa4\u5b8c\u6210\u6587\u4ef6\u7684\u4e0a\u4f20\u3002\u901a\u5e38\uff0c\u9884\u7b7e\u540dURL\u5141\u8bb8\u5ba2\u6237\u7aef\u76f4\u63a5\u5411\u4e91\u5b58\u50a8\u670d\u52a1\uff08\u5982AWS S3\u3001\u963f\u91cc\u4e91OSS\u7b49\uff09\u4e0a\u4f20\u6587\u4ef6\u5206\u7247\uff0c\u800c\u65e0\u9700\u989d\u5916\u7684\u8eab\u4efd\u9a8c\u8bc1\u3002"),(0,r.yg)("h3",{id:"1\u83b7\u53d6\u5927\u6587\u4ef6\u5206\u7247\u4e0a\u4f20\u7684\u9884\u7b7e\u540d\u7684url"},"1\uff09\u83b7\u53d6\u5927\u6587\u4ef6\u5206\u7247\u4e0a\u4f20\u7684\u9884\u7b7e\u540d\u7684URL"),(0,r.yg)("p",null,"\u4f7f\u7528",(0,r.yg)("a",{parentName:"p",href:"/help/docs/model-as-a-service/AI_Studio/API/RAG_openapi/job/presign-multipart-upload-file-url"},"\u9884\u7b7e\u540d\u5927\u6587\u4ef6\u5206\u7247\u4e0a\u4f20\u7684URL"),"\u83b7\u53d6\u6bcf\u4e2a\u5206\u7247\u7684\u9884\u7b7e\u540dURL\u3002\u54cd\u5e94\u4e2d\u4f1a\u8fd4\u56de\u591a\u4e2a\u9884\u7b7e\u540d\u7684URL\uff0c\u6bcf\u4e2aURL\u5bf9\u5e94\u4e00\u4e2a\u6587\u4ef6\u5206\u7247\u3002"),(0,r.yg)("p",null,"\u5047\u8bbe\u8981\u4e0a\u4f20\u4e24\u4e2a\u5927\u6587\u4ef6\uff0c\u9700\u8981\u8bf7\u6c42\u4e24\u6b21\u5206\u7247\u9884\u7b7e\u540dURL\uff0c\u4ee5\u4e0b\u662f\u63a5\u53e3\u8bf7\u6c42\u793a\u4f8b:"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-shell"},'curl \'https://aidmp.cn-sh-01.sensecoreapi.cn/studio/rag/data/v1/jobs/13ea23cc2fc14452b26682f2e1f7f577/files:presignMultipartUploadFileUrl\' \\\n -H \'authorization: Bearer eyJhbGciOi...\' \\\n --data-raw \'{\n "job_id":"13ea23cc2fc14452b26682f2e1f7f577",\n "relpath":"test1.jsonl","file_size":15042941\n }\'\ncurl \'https://aidmp.cn-sh-01.sensecoreapi.cn/studio/rag/data/v1/jobs/13ea23cc2fc14452b26682f2e1f7f577/files:presignMultipartUploadFileUrl\' \\\n -H \'authorization: Bearer eyJhbGciOi...\' \\\n --data-raw \'{\n "job_id":"13ea23cc2fc14452b26682f2e1f7f577",\n "relpath":"GLM-4-Instruct-4K-zh-openai.jsonl",\n "file_size":12682527\n }\'\n')),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"\u5176\u4e2d",(0,r.yg)("inlineCode",{parentName:"strong"},"rel_path"),"\u662f\u6587\u4ef6\u4e0a\u4f20\u5230\u77e5\u8bc6\u5e93\u4e2d\u7684\u76ee\u6807\u8def\u5f84\uff0c ",(0,r.yg)("inlineCode",{parentName:"strong"},"file_size"),"\u662f\u6587\u4ef6\u5927\u5c0f")),(0,r.yg)("h4",{id:"\u54cd\u5e94\u793a\u4f8b-1"},"\u54cd\u5e94\u793a\u4f8b"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-shell"},'{\n "upload_id": "0",\n "list": [\n {\n "uri": "https://aoss.cn-sh-01.sensecoreapi-oss.cn/rag-system/kn/datasets/rag_6a53d6ce2ae74633b2e52361286c53ad/jobs/13ea23cc2fc14452b26682f2e1f7f577/Claude3-Opus-Multi-Instruct-5K-openai.jsonl?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=CD840429150E4FD2805997FE12D18A86%2F20250103%2Fdefault%2Fs3%2Faws4_request&X-Amz-Date=20250103T032922Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&partNumber=1&uploadId=0&X-Amz-Signature=fbb6285576b7317f8d35a319339b09d8624f9f9f2182d3c3d9f71ede898ad1db",\n "part_num": "1",\n "part_size": "10485760",\n "file_offset": "0"\n },\n {\n "uri": "https://aoss.cn-sh-01.sensecoreapi-oss.cn/rag-system/kn/datasets/rag_6a53d6ce2ae74633b2e52361286c53ad/jobs/13ea23cc2fc14452b26682f2e1f7f577/Claude3-Opus-Multi-Instruct-5K-openai.jsonl?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=CD840429150E4FD2805997FE12D18A86%2F20250103%2Fdefault%2Fs3%2Faws4_request&X-Amz-Date=20250103T032922Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&partNumber=2&uploadId=0&X-Amz-Signature=3252a4a0367ded96245ecbbfba23e0a7e4026f5ee28a624630ea84d9510f31cc",\n "part_num": "2",\n "part_size": "4557181",\n "file_offset": "10485760"\n }\n ]\n}\n{\n "upload_id": "0",\n "list": [\n {\n "uri": "https://aoss.cn-sh-01.sensecoreapi-oss.cn/rag-system/kn/datasets/rag_6a53d6ce2ae74633b2e52361286c53ad/jobs/13ea23cc2fc14452b26682f2e1f7f577/GLM-4-Instruct-4K-zh-openai.jsonl?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=CD840429150E4FD2805997FE12D18A86%2F20250103%2Fdefault%2Fs3%2Faws4_request&X-Amz-Date=20250103T032922Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&partNumber=1&uploadId=0&X-Amz-Signature=59dcac6b639cc65d634633ccb22efabeb4379e7dbc93ee9ac5effe8deed1bfb3",\n "part_num": "1",\n "part_size": "10485760",\n "file_offset": "0"\n },\n {\n "uri": "https://aoss.cn-sh-01.sensecoreapi-oss.cn/rag-system/kn/datasets/rag_6a53d6ce2ae74633b2e52361286c53ad/jobs/13ea23cc2fc14452b26682f2e1f7f577/GLM-4-Instruct-4K-zh-openai.jsonl?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=CD840429150E4FD2805997FE12D18A86%2F20250103%2Fdefault%2Fs3%2Faws4_request&X-Amz-Date=20250103T032922Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&partNumber=2&uploadId=0&X-Amz-Signature=56141b77a656ed7d4c439edec54c86435ab3c277e066c537eaae7483ddf6330a",\n "part_num": "2",\n "part_size": "2196767",\n "file_offset": "10485760"\n }\n ]\n}\n')),(0,r.yg)("h3",{id:"2\u672c\u5730\u6587\u4ef6\u4e0a\u4f20"},"2\uff09\u672c\u5730\u6587\u4ef6\u4e0a\u4f20"),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"\u2714 \u4f7f\u7528 ",(0,r.yg)("inlineCode",{parentName:"strong"},"curl")," \u4e0a\u4f20\u6587\u4ef6")),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-shell"},'#!/bin/bash\n\n# \u5b9a\u4e49\u5206\u7247\u4fe1\u606f\nfile="/Users/***/data/GLM-4-Instruct-4K-zh-openai.jsonl"\ndeclare -a parts=(\n "https://aoss.cn-sh-01.sensecoreapi-oss.cn/rag-system/kn/datasets/rag_6a53d6ce2ae74633b2e52361286c53ad/jobs/13ea23cc2fc14452b26682f2e1f7f577/GLM-4-Instruct-4K-zh-openai.jsonl?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=CD840429150E4FD2805997FE12D18A86%2F20250103%2Fdefault%2Fs3%2Faws4_request&X-Amz-Date=20250103T032922Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&partNumber=1&uploadId=0&X-Amz-Signature=59dcac6b639cc65d634633ccb22efabeb4379e7dbc93ee9ac5effe8deed1bfb3 0 10485760"\n "https://aoss.cn-sh-01.sensecoreapi-oss.cn/rag-system/kn/datasets/rag_6a53d6ce2ae74633b2e52361286c53ad/jobs/13ea23cc2fc14452b26682f2e1f7f577/GLM-4-Instruct-4K-zh-openai.jsonl?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=CD840429150E4FD2805997FE12D18A86%2F20250103%2Fdefault%2Fs3%2Faws4_request&X-Amz-Date=20250103T032922Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&partNumber=2&uploadId=0&X-Amz-Signature=56141b77a656ed7d4c439edec54c86435ab3c277e066c537eaae7483ddf6330a 10485760 2196767"\n)\n\n# \u904d\u5386\u5206\u7247\u4e0a\u4f20\nfor part in "${parts[@]}"; do\n IFS=\' \' read -r url offset size <<< "$part"\n echo "Uploading part with offset $offset and size $size to $url"\n \n curl -X PUT \\\n -H "Content-Length: $size" \\\n --data-binary @<(dd if="$file" bs=1 skip="$offset" count="$size") \\\n "$url"\n\n if [ $? -ne 0 ]; then\n echo "Failed to upload part at offset $offset"\n exit 1\n fi\ndone\n\necho "All parts uploaded successfully."\n\n')),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("strong",{parentName:"li"},'`file="*'),'"`**: \u672c\u5730\u6587\u4ef6\u7684\u8def\u5f84\uff0c\u786e\u4fdd\u8fd9\u4e2a\u8def\u5f84\u6307\u5411\u4f60\u8981\u4e0a\u4f20\u7684\u6587\u4ef6'),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("strong",{parentName:"li"},(0,r.yg)("inlineCode",{parentName:"strong"},"parts=()")),":\u6bcf\u4e2a\u5143\u7d20\u5305\u542b\u63a5\u53e3\u8fd4\u56de\u7684URL\u3001\u504f\u79fb\u91cf\u3001\u5206\u7247\u5927\u5c0f"),(0,r.yg)("li",{parentName:"ul"},"\u4f7f\u7528 IFS \u5206\u5272\u5b57\u7b26\u4e32\uff0c\u63d0\u53d6 url\u3001offset \u548c size\u3002"),(0,r.yg)("li",{parentName:"ul"},"\u4f7f\u7528 curl \u6267\u884c\u4e0a\u4f20\uff0c\u8bfb\u53d6\u6587\u4ef6\u7684\u6307\u5b9a\u90e8\u5206\u3002")),(0,r.yg)("p",null,"\u8fd4\u56de\u793a\u4f8b\uff1a",(0,r.yg)("a",{id:"return-example"})),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-shell"},'HTTP/1.1 200 OK\nServer: nginx\nDate: Fri, 03 Jan 2025 08:24:23 GMT\nContent-Length: 0\nAccept-Ranges: bytes\nContent-Security-Policy: block-all-mixed-content\nEtag: "9377b927a7a9b229a7bf4a1ca81a0c34"\nStrict-Transport-Security: max-age=31536000; includeSubDomains\nX-Content-Type-Options: nosniff\nX-Xss-Protection: 1; mode=block\nStrict-Transport-Security: max-age=31536000; includeSubDomains; preload\n')),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"\u2714 \u4f7f\u7528 Python \u7684 ",(0,r.yg)("inlineCode",{parentName:"strong"},"requests")," \u5e93\u4e0a\u4f20\u6587\u4ef6")),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-python"},'import os\nimport requests\n\ndef upload_part(uri, data):\n """\n \u4e0a\u4f20\u5206\u7247\u6587\u4ef6\u5230\u6307\u5b9a\u7684 URI\u3002\n """\n headers = {"Content-Length": str(len(data))}\n response = requests.put(uri, data=data, headers=headers)\n \n if response.status_code != 200:\n raise Exception(f"Upload failed: {response.status_code}, {response.text}")\n \n print(f"Uploaded part successfully to {uri}")\n\ndef upload_file(file_path, parts):\n """\n \u5206\u7247\u4e0a\u4f20\u6587\u4ef6\u3002\n :param file_path: \u672c\u5730\u6587\u4ef6\u8def\u5f84\n :param parts: \u5206\u7247\u4fe1\u606f\u5217\u8868\uff0c\u5305\u542b URI\u3001\u504f\u79fb\u91cf\u548c\u5927\u5c0f\n """\n with open(file_path, "rb") as f:\n for part in parts:\n # \u79fb\u52a8\u6587\u4ef6\u6307\u9488\u5230\u6307\u5b9a\u504f\u79fb\u91cf\n f.seek(part["file_offset"])\n # \u8bfb\u53d6\u5206\u7247\u5927\u5c0f\u7684\u6570\u636e\n data = f.read(part["part_size"])\n \n # \u4e0a\u4f20\u5206\u7247\n print(f"Uploading part {part[\'part_num\']}...")\n upload_part(part["uri"], data)\n\nif __name__ == "__main__":\n # \u793a\u4f8b\u5206\u7247\u4fe1\u606f\n parts = [\n {\n "uri": "https://aoss.cn-sh-01.sensecoreapi-oss.cn/...",\n "part_num": "1",\n "part_size": 10485760,\n "file_offset": 0\n },\n {\n "uri": "https://aoss.cn-sh-01.sensecoreapi-oss.cn/...",\n "part_num": "2",\n "part_size": 2196767,\n "file_offset": 10485760\n }\n ]\n \n # \u6587\u4ef6\u8def\u5f84\n file_path = "largefile.jsonl"\n \n try:\n upload_file(file_path, parts)\n print("All parts uploaded successfully.")\n except Exception as e:\n print(f"Error: {e}")\n\n')),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"\u2714 \u4f7f\u7528 Go\u7684 ",(0,r.yg)("inlineCode",{parentName:"strong"},"net/http")," \u5e93\u4e0a\u4f20\u6587\u4ef6")),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-go"},'package main\n\nimport (\n "bytes"\n "fmt"\n "io"\n "net/http"\n "os"\n)\n\nfunc uploadPart(uri string, filePath string, offset, size int64) error {\n // \u6253\u5f00\u6587\u4ef6\n file, err := os.Open(filePath)\n if err != nil {\n return err\n }\n defer file.Close()\n\n // \u5b9a\u4f4d\u5230\u5206\u7247\u8d77\u59cb\u4f4d\u7f6e\n _, err = file.Seek(offset, io.SeekStart)\n if err != nil {\n return err\n }\n\n // \u8bfb\u53d6\u5206\u7247\u5185\u5bb9\n buffer := make([]byte, size)\n _, err = io.ReadFull(file, buffer)\n if err != nil {\n return err\n }\n\n // \u53d1\u8d77 HTTP PUT \u8bf7\u6c42\n req, err := http.NewRequest("PUT", uri, bytes.NewReader(buffer))\n if err != nil {\n return err\n }\n req.Header.Set("Content-Length", fmt.Sprintf("%d", size))\n\n client := &http.Client{}\n resp, err := client.Do(req)\n if err != nil {\n return err\n }\n defer resp.Body.Close()\n\n if resp.StatusCode != http.StatusOK {\n return fmt.Errorf("upload failed with status: %s", resp.Status)\n }\n\n fmt.Println("Uploaded part successfully:", uri)\n return nil\n}\n\nfunc main() {\n parts := []struct {\n URI string\n Offset int64\n Size int64\n }{\n {\n URI: "https://aoss.cn-sh-01.sensecoreapi-oss.cn/rag-system/kn/datasets/rag_6a53d6ce2ae74633b2e52361286c53ad/jobs/13ea23cc2fc14452b26682f2e1f7f577/GLM-4-Instruct-4K-zh-openai.jsonl?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=CD840429150E4FD2805997FE12D18A86%2F20250103%2Fdefault%2Fs3%2Faws4_request&X-Amz-Date=20250103T032922Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&partNumber=1&uploadId=0&X-Amz-Signature=59dcac6b639cc65d634633ccb22efabeb4379e7dbc93ee9ac5effe8deed1bfb3",\n Offset: 0,\n Size: 10485760,\n },\n {\n URI: "https://aoss.cn-sh-01.sensecoreapi-oss.cn/rag-system/kn/datasets/rag_6a53d6ce2ae74633b2e52361286c53ad/jobs/13ea23cc2fc14452b26682f2e1f7f577/GLM-4-Instruct-4K-zh-openai.jsonl?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=CD840429150E4FD2805997FE12D18A86%2F20250103%2Fdefault%2Fs3%2Faws4_request&X-Amz-Date=20250103T032922Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&partNumber=2&uploadId=0&X-Amz-Signature=56141b77a656ed7d4c439edec54c86435ab3c277e066c537eaae7483ddf6330a",\n Offset: 10485760,\n Size: 2196767,\n },\n }\n\n for _, part := range parts {\n err := uploadPart(part.URI, "GLM-4-Instruct-4K-zh-openai.jsonl", part.Offset, part.Size)\n if err != nil {\n fmt.Println("Error uploading part:", err)\n }\n }\n}\n')),(0,r.yg)("h3",{id:"3-\u5b8c\u6210\u5206\u7247\u4e0a\u4f20"},"3\uff09 \u5b8c\u6210\u5206\u7247\u4e0a\u4f20"),(0,r.yg)("p",null,"\u6240\u6709\u5206\u7247\u4e0a\u4f20\u5b8c\u6210\u540e\uff0c\u9700\u8981\u8c03\u7528",(0,r.yg)("a",{parentName:"p",href:"/help/docs/model-as-a-service/AI_Studio/API/RAG_openapi/job/complete-multipart-upload-file"},"\u5b8c\u6210\u5927\u6587\u4ef6\u5206\u7247\u4e0a\u4f20"),"\u6765\u901a\u77e5\u670d\u52a1\u7aef\u5408\u5e76\u8fd9\u4e9b\u5206\u7247\u3002"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-shell"},'curl \'https://aidmp.cn-sh-01.sensecoreapi.cn/studio/rag/data/v1/jobs/13ea23cc2fc14452b26682f2e1f7f577/files:completeMultipartUploadFile\' \\\n -H \'authorization: Bearer eyJhbGciOi...\' \\\n --data-raw \'{\n "job_id":"13ea23cc2fc14452b26682f2e1f7f577",\n "upload_id":"0",\n "relpath":"Claude3-Opus-Multi-Instruct-5K-openai.jsonl",\n "list":[\n {\n "part_num":"1",\n "etag":"\\"863ded524478b3cb3471804cfa779ce1\\""\n },\n {\n "part_num":"2",\n "etag":"\\"d1f2db7422a7b0d2159487eea22749ab\\""\n }\n ]\n }\'\n')),(0,r.yg)("p",null,"\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff1a"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"upload_id")," \u662f\u4e0a\u4f20ID\uff0c\u7531\u9884\u7b7e\u540dURL\u63a5\u53e3\u8fd4\u56de\u3002"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"list")," \u4e2d\u5217\u51fa\u4e86\u6240\u6709\u4e0a\u4f20\u7684\u5206\u7247\u4fe1\u606f\uff08",(0,r.yg)("inlineCode",{parentName:"li"},"etag")," \u548c ",(0,r.yg)("inlineCode",{parentName:"li"},"part_num"),"\uff09\u3002"),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("inlineCode",{parentName:"li"},"etag")," \u6bcf\u6b21\u4e0a\u4f20\u5206\u7247\u6210\u529f\u540e\uff0c\u4e91\u5b58\u50a8\u670d\u52a1\u4f1a\u8fd4\u56de\u4e00\u4e2a ",(0,r.yg)("a",{parentName:"li",href:"#return-example"},"ETag")," \u503c\uff0c\u9700\u5728\u5b8c\u6210\u5206\u7247\u4e0a\u4f20\u65f6\u63d0\u4f9b\u8be5\u503c")),(0,r.yg)("blockquote",null,(0,r.yg)("p",{parentName:"blockquote"},(0,r.yg)("strong",{parentName:"p"},"\u6ce8\u610f\u4e8b\u9879"),": \u4e0a\u4f20\u5206\u7247\u65f6\uff0c\u8bf7\u786e\u4fdd\u987a\u5e8f\u6b63\u786e\uff0c\u5e76\u5728\u5b8c\u6210\u4e0a\u4f20\u65f6\u6309\u7167\u987a\u5e8f\u63d0\u4ea4\u3002")),(0,r.yg)("p",null,"\u901a\u8fc7\u4ee5\u4e0a\u6b65\u9aa4\uff0c\u6587\u4ef6\u5c06\u88ab\u6210\u529f\u4e0a\u4f20\uff0c\u5e76\u5728\u670d\u52a1\u5668\u7aef\u5408\u5e76\u4e3a\u5b8c\u6574\u7684\u6587\u4ef6\u3002"))}u.isMDXComponent=!0}}]);