Skip to content
On this page

原则规范

  • 安全性:前后端均应该对上传文件的类型进行限制,脚本类的文件统一禁止上传,具体可参考:信息安全 - 行为安全
  • 文件大小:前后端均应该对上传文件的大小进行限制,默认只允许上传 10M 以内的文件,如项目需要超出该大小,则单独进行放宽并考虑是否需要用到 对象存储(OSS)
  • 文件链接:在返回文件的具体信息时应返回该文件的数据对象,默认需要返回该文件的具体的物理访问链接,如果该文件是加了鉴权访问,则需要返回该文件的具体目录

文件上传

  • 后端统一使用框架通用(或自定义封装)的文件上传接口,不可一个项目,多个文件上传接口
  • 前端在进行文件上传时,统一使用 文件流 进行传参,同时后端需要返回该文件的详情:
javascript
// 传参
const req = {
    file: 'xxx' // File 文件流
}

// 返回值
const res = {
    id: 'xxx', // 文件ID
    name: 'xxx', // 文件名
    type: 'png', // 文件类型(文件后缀) 如:png、jpg、pdf、doc等等
    url: 'xxx' // 文件具体的访问链接(如:https://xxx/xxx/xxx.png) 或 具体目录(如:xxx/xxx/xxx/id) 
}

业务关联规范

  • 已上传的文件需与具体的业务进行关联时,需通过 文件ID 进行关联,传参的数据协议如下:
javascript
// 业务数据的新增/更新 传参
const req1 = {
    userName: 'xxx',
    avatar: 'id' // 通过文件上传时返回的文件ID值
}
const req2 = {
    userName: 'xxx',
    banner: ['id1', 'id2', 'id3'] // 多文件可通过ID数组/字符串进行传参
}
  • 获取业务数据详情时,需要把已关联的文件数据以对象的形式返回,需要返回各个文件的具体信息,返回值的数据协议如下:
javascript
// 业务数据的详情 返回值
const res1 = {
    userName: 'xxx',
    avatar: {
        id: 'xxx',
        name: 'xxx',
        type: 'png',
        url: 'xxx'
    } // 文件的详细信息
}
const res2 = {
    userName: 'xxx',
    banner: [
        {
            id: 'xxx',
            name: 'xxx',
            type: 'png',
            url: 'xxx'
        },
        {
            id: 'xxx',
            name: 'xxx',
            type: 'png',
            url: 'xxx'
        },
        {
            id: 'xxx',
            name: 'xxx',
            type: 'png',
            url: 'xxx'
        },
    ] // 多文件返回格式
}

智加文档规范