Cool-Admin-Node
后台管理系统开发、Api接口开发
Cool-Admin-Node
后台管理系统开发、Api接口开发
Cool-Admin-Java
后台管理系统开发、Api接口开发
Cool-Admin-Vue
后台管理系统开发前端
Cool Uni
移动端基于 uni-app 的跨端开发框架
Cool Team(即将推出)
Ai多智能体团队协作完成任务
技术指导
提供专业的技术指导服务
定制开发
外包,承接各类软件开发
低价云服务器
特价、低价的云服务器
发布帖子
寻求帮助或分享知识
发布插件
分享您的插件
Cool-Admin-Node
Cool-Admin-Java
Cool-Admin-Vue
Cool Uni
Cool Team(即将推出)
技术指导
定制开发
低价云服务器
发布帖子
发布插件
文件上传-Minio
替换系统的文件上传服务,使用 MinIO 对象存储作为文件上传服务。
调用插件的时候需要用到标识,标识是唯一的,不能重复,建议使用英文,不要使用中文,对应插件 plugin.json
中的 key
字段
{
"endPoint": "必须,MinIO服务器地址(不要包含http://或https://前缀)",
"port": "必须,MinIO API端口(通常是9000,而不是控制台端口9001)",
"useSSL": "必须,是否使用SSL(true/false)",
"accessKey": "必须,MinIO的accessKey",
"secretKey": "必须,MinIO的secretKey",
"bucket": "必须,MinIO的bucket名称",
"region": "可选,MinIO的区域",
"publicDomain": "可选,自定义公共访问域名",
"expiry": "可选,预签名URL的过期时间(秒),默认3600",
"s3ForcePathStyle": "可选,是否强制使用路径样式访问(true/false),默认为true"
}
MinIO 通常有两个端口:
当配置此插件时,必须使用 API 端口(通常是 9000)而不是控制台端口(9001)。如果使用错误的端口,可能会遇到 S3 API Requests must be made to API port
错误。
在配置 endPoint 时,不要包含 http://
或 https://
前缀,只需要提供主机名或 IP 地址。例如:
minio.example.com
或 192.168.1.100
http://minio.example.com
或 https://192.168.1.100
如果您添加了协议前缀,可能会导致认证错误。
前端签名直传用于浏览器安全限制,在传输的时候会有跨域访问的情况,因此需要到 MinIO 管理控制台,添加跨域规则,还需要配置对应的权限。
对于 MinIO 的跨域配置,可以通过设置 CORS 规则来实现:
mc admin config set myminio cors <<EOF
{
"cors": {
"enable": true,
"allowedOrigins": ["*"],
"allowedMethods": ["GET", "PUT", "POST", "DELETE"],
"allowedHeaders": ["*"],
"exposeHeaders": ["ETag", "Content-Length", "Content-Type"],
"maxAgeSeconds": 3600
}
}
EOF
前端cl-upload组件中把拼接的key去掉,不然有错误
确保已经安装并配置 MinIO Client 工具,用于管理 MinIO 服务。
错误: S3 API Requests must be made to API port
mc admin info myminio
验证服务器连接错误: The request signature we calculated does not match the signature you provided
跨域问题
文件访问权限
mc policy set download myminio/yourbucket
快速设置为可下载下面是插件提供的一些方法
/**
* 获得上传模式
*/
getMode(): Promise<Mode>;
/**
* 获得原始操作对象
* @returns
*/
getMetaFileObj(): Promise<any>;
/**
* 下载并上传
* @param url
* @param fileName 文件名
*/
downAndUpload(url: string, fileName?: string): Promise<string>;
/**
* 指定Key(路径)上传,本地文件上传到存储服务
* @param filePath 文件路径
* @param key 路径一致会覆盖源文件
*/
uploadWithKey(filePath, key): Promise<string>;
/**
* 上传文件
* @param ctx
* @param key 文件路径
*/
upload(ctx): Promise<any>;
@Inject()
pluginService: PluginService;
// 获得上传模式
await this.pluginService.invoke('upload', 'getMode');
v1.0.2 (2024-05-15)
v1.0.1 (2024-05-01)
v1.0.0 (2024-03-31)