文件上传钩子

我们已经学习过如何上传文件,今天我们学习文件上传的2个钩子。

首先,我们看下文件上传的时序图。

它涉及4部分,客户端、飞布服务、钩子服务和OSS服务。

  1. 客户端上传文件到飞布服务

  2. 飞布服务调用前置钩子,对文件进行处理或校验,并返回文件名或错误信息。

  3. 飞布上传文件到OSS服务

  4. 飞布调用后置钩子,处理文件上传错误或存储上传成功的文件信息。

  5. 将文件名或错误信息返还给客户端,

前置钩子

preUpload 钩子又名文件上传前置钩子,在文件上传到OSS前执行,主要用例:

  • 改变文件的存储路径

  • 或校验文件格式是否合法

后置钩子

postUpload 钩子又名文件上传后置钩子,在文件上传到OSS后执行,主要用例:

  • 上传成功或失败后发送消息通知

  • 或存储文件的URL到数据库

文件元数据meta

上述两个钩子,都包含一个特殊入参:meta 文件元数据

其用途是在上传文件的同时,额外补充业务信息。

使用方式如下:

1,设置meta

在meta中填入JSON对象的json schema描述,限制元数据的格式。

jsonschema比较复杂,可以利用工具自动生成。例如,若想在上传图片的同时也附带图片所属的文章id,其:

JSON DATA为:

JSON SCHEMA为:

由于Fireboom兼容的json schema版本较低,要手工删除第9行:additionproperties字段。

2,上传文件

在调用上传接口时,在请求头中设置x-meatadata为对应的JSON data。

3,使用钩子

后续可以在钩子中使用 meta。Meta对象按照json schema定义。

临时签名

公开可读的bucket拿到路径后就能访问,但如果是私有bucket则需要临时签名才能访问。

如图,文件2.jpeg,需要追加上述后缀(临时签名),才能访问。

最后更新于

这有帮助吗?