文件上传与下载
大约 2 分钟
文件上传
文件上传项目中共提供一个组件 SpUpload 和 hooks useUpload 来适配不同场景的上传。
非分片上传
有些场景可能无法使用分片上传,可以使用独立上传接口。
请求方式:POST https://${fileApiUrl}/upload/file
请求参数
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
file | File | 是 | 文件 |
publicResourceType | PublicResourceType | 否 | 公共资源文件类型,仅接收特定枚举值,在 PublicResourceType 中查看 |
返回参数
参数名 | 类型 | 说明 |
---|---|---|
fileId | Long | 文件主键 id |
fileType | String | 文件类型 |
contentType | String | 文件内容类型 如:application/x-gzip |
fileSize | Long | 文件大小 单位:bytes |
downloadUrl | String | 文件下载地址 |
thumbnailUrl | String | 缩略图地址,如果是图片需要有缩略图地址 |
文件下载
提示
需要在 nginx 中添加文件访问代理配,详见 配置开发环境代理
文件下载地址都是后端传过来的完整地址。
- 可以直接调用 downloadFile 方法进行下载。
- 如果使用 sp-file 组件,只要将
fileName
和downloadUrl
传给组件即可显示下载按钮,组件已经实现下载功能,下载下来的文件名就是传入的fileName
的名字。
文件下载 Demo
使用 downloadFile 方法
fileUtils.downloadFile('接口返回的下载地址', '要保存的文件名.xlsx');
使用 sp-file 组件
<sp-file :file-name="file.name" :file-size="file.size" :download-url="file.downloadUrl" />
导入模板下载
由于导入模板需要鉴权,所以使用 Ajax 请求后端接口来下载模板。
ajaxConfig.download('employee/import-template').then(res => {
fileUtils.downloadBlob(res, '员工导入模板.xlsx');
});
图片预览
图片预览与文件下载相同,都需要使用后端传入过来的携带签名的完整 url。
头像下载
获取头像的规则如下:
- 头像的访问地址为
${apiBaseUrl.file}/avatar/employee/${工号}.png
,apiBaseUrl.file
为 file 模块的访问地址。 - 如果为多租户系统,那么头像地址后必须添加
sn=${tenantSN}
参数来确认租户。 - 可以直接使用 SpEmployeeAvatar 组件来获取头像。
- 也可以使用
useEmployee
hooks 来获取头像地址。