文件存储

优质
小牛编辑
124浏览
2023-12-01

厂商标识

标识厂商
local本地系统
aliyun-oss阿里云 OSS

频道标识

标识描述
public用于公开图片,例如用户头像,或者不需要付费的任何图片使用 public 作为频道

创建上传任务

/api/v2/storage

请求内容参数:

参数类型描述
filenamestring必须,文件原始名称(需要带上文件拓展名)
hashstring必须,文件的 MD5 算法进行计算的值,采用 32 位算法字符
sizeinteger必须,文件内容大小
mime_typestring必须,文件 MIME 类型
storagearray必须,文件存储信息
storage.channelstring必须,允许的「频道标识

响应:

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

其他厂商