文件存储
厂商标识
| 标识 | 厂商 | 
|---|---|
local | 本地系统 | 
aliyun-oss | 阿里云 OSS | 
频道标识
| 标识 | 描述 | 
|---|---|
public | 用于公开图片,例如用户头像,或者不需要付费的任何图片使用 public 作为频道 | 
创建上传任务
/api/v2/storage
请求内容参数:
| 参数 | 类型 | 描述 | 
|---|---|---|
filename | string | 必须,文件原始名称(需要带上文件拓展名) | 
hash | string | 必须,文件的 MD5 算法进行计算的值,采用 32 位算法字符 | 
size | integer | 必须,文件内容大小 | 
mime_type | string | 必须,文件 MIME 类型 | 
storage | array | 必须,文件存储信息 | 
storage.channel | string | 必须,允许的「频道标识」 | 
响应:
Status: 201 Created
{
    "uri": "https://seven-local.oss-cn-beijing.aliyuncs.com/2018/09/05/TxgUMmw25De0t1PCiXkqpMqVAvWFCFFWlNKwd8Xl4V0mxyDvb7ISj0PmTUFH5PJH.png?OSSAccessKeyId=LTAIqgpxMlsPodLB&Expires=1536141182&Signature=EuCsfHaiGnkhDQ4D8wys%2FU7pYtQ%3D", // 上传文件的请求地址
    "method": "PUT", // 上传文件的请求方式
    "headers": { // 上传文件时候,headers 必须的键值
        "Content-Disposition": "attachment;filename=demo.png",
        "Content-Md5": "UC57soIyuC7SPBgHe47MNA==",
        "Content-Length": 802930,
        "Content-Type": "image/png"
    },
    "form": null, // 上传时候的表单,如果是 NULL 则表示整个 Body 是二进制文件流,如果是对象,则构造 `application/form-data` 表单对象
    "file_key": null, // 如果存在 `form` 表单信息,文件流所使用的 key 名称
    "node": "public:2018/09/05/TxgUMmw25De0t1PCiXkqpMqVAvWFCFFWlNKwd8Xl4V0mxyDvb7ISj0PmTUFH5PJH.png" // 文件上传完成后所使用的文件节点
}
文件附带信息
这里是指使用文件对象的附带信息。例如用户资料种的 avatar 字段:
{
    /// ...
    "avatar": {
        "url": "http://127.0.0.1:8000/storage/public:MjAxOC8wOS8wNS9UeGdVTW13MjVEZTB0MVBDaVhrcXBNcVZBdldGQ0ZGV2xOS3dkOFhsNFYwbXh5RHZiN0lTajBQbVRVRkg1UEpILnBuZw==", // 文件请求地址,GET 方式
        "vendor": "aliyun-oss", // 厂商名称
        "mime": "image/png", // 文件 MIME
        "size": 802930, // 文件尺寸
        "dimension": {  // 如果文件是图片,将返回文件的尺寸信息
            "width": 2800, // 图片宽度
            "height": 1867 // 图片高度
        }
    },
    /// ...
}
文件处理规则
文件处理规则是在得到文件请求地址后,使用「查询参数」rule 进行传递参数。这里的参数是根据 vendor 自动客户端自行调整的。
本地存储(local)
本地存储仅支持「图片」处理,其他文件一律不处理。规则如下:
| 名称 | 描述 | 
|---|---|
w | 可选,指定图片宽度 | 
h | 可选,指定图片高度 | 
q | 可选,指定图片质量,0 - 90 | 
b | 可选,指定图片高斯模糊程度,0 - 100 | 
参数和值使用 _ 进行链接,多个参数使用 , 进行分割,例如指定图片宽度为 200,规则为 w_200,
多个参数,例如指定宽高和模糊:w_100,h_100,b_60。
拼接出来的请求完整 URL 如:
http://127.0.0.1:8000/storage/public:MjAxOC8wOS8wNS9UeGdVTW13MjVEZTB0MVBDaVhrcXBNcVZBdldGQ0ZGV2xOS3dkOFhsNFYwbXh5RHZiN0lTajBQbVRVRkg1UEpILnBuZw==?rule=w_100,h_100,b_60
