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目录下。

image.png