• 上传文件
    • 1. 获取上传文件所需授权凭证和上传地址
    • 2. 使用上一步获取的授权凭证和上传地址,进行文件上传

    上传文件

    上传流程图

    1. +-----------------+ +-----------------+ +-----------------+
    2. | Client/Browser | | FORM API | | 知晓云 |
    3. +-----------------+ +-----------------+ +-----------------+
    4. | | |
    5. +++ Request authorization +++
    6. |-|====================================>|-|
    7. |-| | |-|
    8. |-| Response authorization |-|
    9. |-|<====================================|-|
    10. +++ | +++
    11. | | |
    12. +++ Upload +++ +++
    13. |-|================>|-| |-|
    14. |-| |-| |-|
    15. |-| Response |-| |-|
    16. |-|<================|-| |-|
    17. +++ +++ +++
    18. | | |

    使用知晓云开放 API 上传文件需要以下两个步骤:

    1. 获取上传文件所需授权凭证和上传地址

    接口

    POST https://cloud.minapp.com/userve/v1/upload/

    参数说明

    Content-Type: application/json

    参数 类型 必填 说明
    filename String N 上传的文件名
    categories String N 上传文件的所属分类,格式为文件分类的 ID 数组

    返回参数

    参数 类型 说明
    id String 上传的文件 ID
    policy String 文件上传配置
    authorization String 文件上传凭证
    file_link String 文件上传成功后的访问地址
    upload_url String 上传文件的目标地址

    代码示例

    1. var axios = require('axios').create({
    2. withCredentials: true
    3. })
    4. axios.post('https://cloud.minapp.com/userve/v1/upload/', {
    5. filename: 'crop.gif',
    6. categories: ['5a1ba7b708443e7fc5f2fb18']
    7. }).then(res => {
    8. console.log(res.data)
    9. })

    返回示例

    1. {
    2. "policy": "eyJkYXRlIjogIldlZCwgMDYgRGVjIDIwMTcgMDM6MzI6MzMgR01UIiwgIm5vdGlmeS11cmwiOiAiaHR0cHM6Ly9zc28uaWZhbnIuY29tL2V4dGFwaS9oeWRyb2dlbi91cHl1bi9jYWxsYmFjay8yODcvNWEyNzY0ZDFmZmYxZDYxYWQwZWNhMjQ1LyIsICJidWNrZXQiOiAiY2xvdWQtbWluYXBwLTI4NyIsICJzYXZlLWtleSI6ICIxZU1RUmxrSndoZ2FNaUNnLmdpZiIsICJleHBpcmF0aW9uIjogMTUxMjUzMTQ1M30=",
    3. "upload_url": "https://v0.api.upyun.com/cloud-minapp-287",
    4. "file_link": "https://cloud-minapp-287.cloud.ifanrusercontent.com/1eMQRlkJwhgaMiCg.gif",
    5. "id": "5a2764d1fff1d61ad0eca245",
    6. "authorization": "UPYUN allenzhang:MzmYCcWVjrWoeovC4+tM5Bgwusg="
    7. }

    状态码说明

    200 获得授权凭证成功,400 参数错误(不支持上传的文件格式),404 找不到文件分类 ID

    2. 使用上一步获取的授权凭证和上传地址,进行文件上传

    接口

    POST {UPLOAD_URL}

    UPLOAD_URL 是调用上一步的接口所返回的字段 upload_url 的值,形如:

    1. https://v0.api.upyun.com/cloud-minapp-287

    参数说明

    Content-Type: multipart/form-data

    参数 类型 必填 说明
    authorization String Y 授权凭证
    file String Y 上传的文件流
    policy String Y 授权凭证

    代码示例

    1. var axios = require('axios').create({
    2. withCredentials: true
    3. })
    4. let formData = new FormData()
    5. formData.append('file', fileObj)
    6. formData.append('policy', 'eyJkYXRlIjogIldlZCwgMDYgRGVjIDIwMTcgMDM6MzI6MzMgR01UIiwgIm5vdGlmeS11cmwiOiAiaHR0cHM6Ly9zc28uaWZhbnIuY29tL2V4dGFwaS9oeWRyb2dlbi91cHl1bi9jYWxsYmFjay8yODcvNWEyNzY0ZDFmZmYxZDYxYWQwZWNhMjQ1LyIsICJidWNrZXQiOiAiY2xvdWQtbWluYXBwLTI4NyIsICJzYXZlLWtleSI6ICIxZU1RUmxrSndoZ2FNaUNnLmdpZiIsICJleHBpcmF0aW9uIjogMTUxMjUzMTQ1M30')
    7. formData.append('authorization', 'UPYUN allenzhang:MzmYCcWVjrWoeovC4+tM5Bgwusg=')
    8. axios.post('https://v0.api.upyun.com/cloud-minapp-287', formData, {
    9. 'headers': {'Content-Type': 'multipart/form-data'},
    10. })

    返回示例

    1. {
    2. "image-type": "GIF",
    3. "image-frames": 8,
    4. "image-height": 8,
    5. "code": 200,
    6. "file_size": 329,
    7. "image-width": 8,
    8. "url": "1eMQRlkJwhgaMiCg.gif",
    9. "time": 1512531154,
    10. "message": "ok",
    11. "mimetype": "image/gif"
    12. }

    状态码说明

    200 上传成功