# 上传知识库文件

`POST` `/api/knowledge/document/upload`

前端通过 multipart/form-data 直传文件到后端，由后端代为上传至 OSS，返回 ossKey 后调用方再调用 /document/import 或 /document/importTable 进入解析链路。API Key / OpenAPI 调用可向整个应用空间（X-App-Id）内的知识库上传，用户控制台调用可向该用户自己创建的知识库上传；越出范围返回 403。单文件大小上限 100 MB，支持的扩展名：.pdf/.doc/.docx/.txt/.md/.markdown/.jpg/.jpeg/.png/.xlsx/.xls/.csv。

## 请求参数

### 请求头参数

| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| X-Principal-Id | integer | 否 | 身份主体ID（Long类型）。通过API访问时必须传递以标识操作主体；通过页面访问时无需传递。可通过「身份主体」模块的创建接口获取。 |

### Query 参数

| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| libraryId | integer | 是 | 目标知识库ID |

### Form Data

| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| file | string | 是 | 待上传文件 |

## 响应

### 200

| 参数名 | 类型 | 说明 |
|--------|------|------|
| httpStatusCode | integer | HTTP状态码 |
| message | string | 响应消息 |
| data | KnowledgeUploadVO | 响应数据 |
|     ossKey | string | OSS 对象 Key（后续 import 接口必填） |
|     fileName | string | 原始文件名（含扩展名） |
|     fileSize | integer | 文件大小（字节） |
|     contentType | string | 文件 MIME 类型 |
| success | boolean | 是否成功 |
| requestId | string | 上游请求ID，用于跨系统链路追踪排查问题 |
| errCode | string | 上游错误码，前端可据此做特殊UI处理 |

### 400

| 参数名 | 类型 | 说明 |
|--------|------|------|
| httpStatusCode | integer | HTTP状态码 |
| message | string | 响应消息 |
| data | object | 响应数据 |
| success | boolean | 是否成功 |
| requestId | string | 上游请求ID，用于跨系统链路追踪排查问题 |
| errCode | string | 上游错误码，前端可据此做特殊UI处理 |

### 500

| 参数名 | 类型 | 说明 |
|--------|------|------|
| httpStatusCode | integer | HTTP状态码 |
| message | string | 响应消息 |
| data | object | 响应数据 |
| success | boolean | 是否成功 |
| requestId | string | 上游请求ID，用于跨系统链路追踪排查问题 |
| errCode | string | 上游错误码，前端可据此做特殊UI处理 |

