# 本地文件上传

用于创建/修改知识时,需要先把本地文件上传至腾讯云后,再将腾讯云上的文件位置与知识节点做关联

本页文档主要介绍如何把本地文件上传至腾讯云并获取state的步骤

state参数的使用请参照应用接口中模块接口的说明

# 第一步:获取签名

请求URL

POST https://lxapi.lexiangla.com/cgi-bin/v1/kb/files/upload-params

请求头

参数 是否必须 说明
Content-Type 固定值:"application/json; charset=utf-8"
Authorization 接口调用凭证 access_token
值格式:"Bearer access_token"
示例值:"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJS"
x-staff-id 成员帐号,作为文件上传者

其他说明

事项 说明
权限要求 本地文件上传

请求参数

{
    "name": "测试.xlsx",
    "media_type": "file"
}

参数说明

参数 是否必须 默认值 说明
name 文件/视频/音频名称(需带拓展名)
media_type 获取签名的媒体类型, file/video/audio

响应

200 OK 状态码

{
    "options": {
        "Bucket": "lexiang4test-xxxxxxxx",
        "Region": "ap-shanghai"
    },
    "object":{
        "key": "company_xxx/2017/06/xx.xlsx",
        "state": "f36e6cc7-e8af-45ed-8e83-5cdb2e44b28b",
        "upload_url": "https://lexiang4test-xxxxxxxx.cos.ap-shanghai.myqcloud.com/company_xxx/2017/06/xx.xlsx?q-sign-algorithm=sha1&...",
        "headers": {
           "Content-Type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
           "Content-Disposition": "attachment; filename=\"测试.xlsx\"; filename*=utf-8''%E6%B5%8B%E8%AF%95.xlsx"
        },
        "auth": {
           "XCosSecurityToken": "be449e692ad8c270abf3dca539ccb511069021ea30001"
        }
     }
}

# 第二步:上传到腾讯云

# 上传文件

腾讯云COS存储提供了用于上传文件到COS存储桶的各类接口。本文使用接口 putObject ,指引用户如何将文件直接上传到腾讯云。

腾讯云官方文档https://cloud.tencent.com/document/product/436/7749 (opens new window)

请求URL

PUT <object.upload_url>

请求头

必须将第一步响应中的 object.auth.XCosSecurityToken 作为 x-cos-security-token 请求头,并遍历 object.headers,将其中的全部请求头名称和值原样带入上传请求。请求头由服务端根据本次上传动态生成,不能只选择示例中的部分字段,也不能修改字段值,否则可能导致签名校验失败。

请求体中: 待上传文件的二进制流

curl示例

curl --request PUT '<object.upload_url>' \
--header 'x-cos-security-token: xxx' \
--header 'Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' \
--header "Content-Disposition: attachment; filename=\"测试.xlsx\"; filename*=utf-8''%E6%B5%8B%E8%AF%95.xlsx" \
--data-binary '@/path/to/测试.xlsx'

响应说明

响应正常且响应头中有ETag字段即表示上传成功

使用第一步获取的state到应用接口中继续作为如参使用即可使文件与应用实体产生关联,注意尽快使用避免超时失效