RichCMS支持多种云存储和本地存储的上传方式,本文来分析源代码,上传协议,在Golang里叫Interface的定义,以下是源代码:
package oss
import (
"io"
)
// UpLoadClient 上传Interface的定义
type UpLoadClient interface {
// Upload 上传
Upload(reader io.Reader, size int64, dir, ext string) (url string, err error)
// Delete 删除
Delete(filePath string) error
}
type TencentConfig struct {
SecretId string `json:"secret_id"`
SecretKey string `json:"secret_key"`
Bucket string `json:"bucket"`
Server string `json:"server"`
}
type QiniuConfig struct {
AccessKey string `json:"access_key"`
SecretKey string `json:"secret_key"`
Bucket string `json:"bucket"`
Server string `json:"server"`
}
type AliyunConfig struct {
AccessKeyId string `json:"access_key_id"`
AccessKeySecret string `json:"access_key_secret"`
Endpoint string `json:"end_point"`
Bucket string `json:"bucket"`
Server string `json:"server"`
}
type HuaweiConfig struct {
AccessKeyId string `json:"access_key_id"`
SecretAccessKey string `json:"secret_access_key"`
Endpoint string `json:"end_point"`
Bucket string `json:"bucket"`
Server string `json:"server"`
}
源代码分析:
- UpLoadClient Interface,是定义了一个接口(或叫协议),所有上传的方式,需要实现此协议。
- TencentConfig 等,是上传配置,比如 TencentConfig 是腾讯对象存储的参数配置。
使用方式:
要使用好上传,在RichCMS的上传配置处,选择上传的方式及其对应的上传参数,上传方式有:阿里云、腾讯云、华为云、七牛云、本地上传,当使用本地上传时,文件会存储在/upload目录下。