49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
package upload
|
|
|
|
import (
|
|
"context"
|
|
"github.com/gogf/gf/v2/net/ghttp"
|
|
"github.com/tiger1103/gfast/v3/api/v1/system"
|
|
)
|
|
|
|
const (
|
|
SourceLocal UploaderType = iota // 上传到本地
|
|
SourceTencent // 上传至腾讯云
|
|
SourceQiniu // 上传到七牛云
|
|
SourceOss // 上传到oss
|
|
)
|
|
|
|
type UploaderType int
|
|
|
|
type IUpload interface {
|
|
Upload(ctx context.Context, file *ghttp.UploadFile) (result system.UploadResponse, err error)
|
|
}
|
|
|
|
var uploadCollection map[UploaderType]IUpload
|
|
|
|
// 注册上传接口
|
|
func RegisterUploader(key UploaderType, value IUpload) {
|
|
if uploadCollection == nil {
|
|
uploadCollection = make(map[UploaderType]IUpload)
|
|
}
|
|
uploadCollection[key] = value
|
|
}
|
|
|
|
// 获取上传接口
|
|
func GetUploader(key UploaderType) IUpload {
|
|
if uploadCollection == nil {
|
|
return nil
|
|
}
|
|
if v, ok := uploadCollection[key]; ok {
|
|
return v
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func Register() {
|
|
RegisterUploader(SourceLocal, &Local{})
|
|
RegisterUploader(SourceTencent, &Tencent{})
|
|
RegisterUploader(SourceQiniu, &Qiniou{})
|
|
RegisterUploader(SourceOss, &OSS{})
|
|
}
|