上传模块
对接各资源存储服务,提供上传和资源访问的通道,可快速定制扩展。
![](/img/docs/upload.png)
API
资源上传
POST /api/file/upload
Request
名称 | 含义 | 类型 | 是否必填 | 默认值 |
---|---|---|---|---|
file | 资源 | File | Y | |
channel | 上传类别,由服务端定义 | String | Y |
Response
名称 | 含义 | 类型 |
---|---|---|
key | 资源标识 | String |
url | 资源地址 | String |
示例
{
code: 200,
data: {
key: '',
url: ''
}
}
资源获取
POST /api/file/getUrl
Request
名称 | 含义 | 类型 | 是否必填 | 默认值 |
---|---|---|---|---|
channel | 上传类别,由服务端定义 | String | Y | |
key | 资源标识 | String | Y |
Response
名称 | 含义 | 类型 |
---|---|---|
key | 资源标识 | String |
url | 资源地址 | String |
示例
{
code: 200,
data: {
key: '',
url: ''
}
}
上传服务
B 端和 C 端不用的应用场景对于资源存储的公私有要求不同,通过配置管理提供不同的能力,server/src/modules/file/config/index.ts
:
...
const ALI_OSS_CONFIG = {
FILE_STORAGE_PROVIDER: 'ali-oss',
IS_PRIVATE_READ: false,
FILE_KEY_PREFIX: 'userUpload/{surveyPath}', // 文件key的前缀,会根据此处配置校验body的参数
NEED_AUTH: true, // 是否需要登录
LINK_EXPIRY_TIME: '2h',
ACCESS_KEY: '', // your_access_key
SECRET_KEY: '', // your_secret_key
BUCKET: '', // your_bucket
REGION: '',
ENDPOINT: '', // endpoint
USE_SSL: false, // useSSL
};
...
export const channels = {
upload: 'SERVER_LOCAL_CONFIG', // 开源工程如图片上传题、文件上传等功能,将基于本地服务进行资源存储和使用
};
export const uploadConfig = {
SERVER_LOCAL_CONFIG,
QINIU_CONFIG,
ALI_OSS_CONFIG,
MINIO_CONFIG,
};
目前提供的 channel:本地服务、alioss、minio、qiniu,代码均已写好,可自行配置账号即可使用。
🌀NOTE:开源工程如图片上传题、文件上传等功能,将基于本地服务进行资源存储和使用,投入生产应用的服务请大家选择适合的资源管理服务。