init.go 1022 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package upload
  2. import (
  3. "context"
  4. "github.com/gogf/gf/v2/net/ghttp"
  5. "github.com/tiger1103/gfast/v3/api/v1/system"
  6. )
  7. const (
  8. SourceLocal UploaderType = iota // 上传到本地
  9. SourceTencent // 上传至腾讯云
  10. SourceQiniu // 上传到七牛云
  11. )
  12. type UploaderType int
  13. type IUpload interface {
  14. Upload(ctx context.Context, file *ghttp.UploadFile) (result system.UploadResponse, err error)
  15. }
  16. var uploadCollection map[UploaderType]IUpload
  17. // 注册上传接口
  18. func RegisterUploader(key UploaderType, value IUpload) {
  19. if uploadCollection == nil {
  20. uploadCollection = make(map[UploaderType]IUpload)
  21. }
  22. uploadCollection[key] = value
  23. }
  24. // 获取上传接口
  25. func GetUploader(key UploaderType) IUpload {
  26. if uploadCollection == nil {
  27. return nil
  28. }
  29. if v, ok := uploadCollection[key]; ok {
  30. return v
  31. }
  32. return nil
  33. }
  34. func init() {
  35. RegisterUploader(SourceLocal, &Local{})
  36. RegisterUploader(SourceTencent, &Tencent{})
  37. RegisterUploader(SourceQiniu, &Qiniou{})
  38. }