mango_upload

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 23, 2022 License: Apache-2.0 Imports: 24 Imported by: 0

README

mangoupload文件上传集成

集成

  • local 文件夹
  • ali OOS
  • huawei OBS
  • qiniu QBox
  • tencent COS

使用方法

1.初始化上传器

global.Uploader = mango_upload.NewUploader()
global.Uploader.SetKeyModel(true)

global.Uploader.SetUploadLimit(config.Conf.FileSet.FileSize, config.Conf.FileSet.FileExt)

2.初始化指定上传器

(以本地上传器为例)

localUploader := mango_upload.NewLocalUploader(mango_upload.LocalConfig{
    Domain:    config.Conf.FileLocal.Domain,
    LocalPath: config.Conf.FileLocal.Path,
    RoutePath: "v1/local",
})

global.Uploader.RegisterUploader(localUploader)

3.注册上传器

global.LocalUploader.RegisterUploader(localUploader)

4.上传示例

func UploadFile(c *gin.Context) {
	fileType := c.PostForm("type")
	file, err := c.FormFile("upload_file")

	switch fileType {
	case "1":
		//图片
		fileType = "image"
	case "2":
		//视频
		fileType = "video"
	case "3":
		//音频
		fileType = "audio"
	case "4":
		fileType = "unzipFile"
	default:
		//文件
		fileType = "file"
	}

	tools.HasError(err, "", -1)

	url, err := global.Uploader.Upload(file, mango_upload.FileType(fileType))
	tools.HasError(err, "", -1)
	var r = map[string]string{
		"url": url,
	}
	app.OK(c, r, "")
}

Documentation

Overview

* * @Author vangogh * @Description 阿里云oss上传器 * @File: aliuploader * @Datetime 2022/4/21 14:08 *

* * @Author vangogh * @Description 华为上传器 * @File: huaweiuploader * @Datetime 2022/4/20 15:42 *

* * @Author vangogh * @Description 上传到本地 * @File: uploadlocal * @Datetime 2022/4/20 10:40 *

* * @Author vangogh * @Description 文件类型 * @File: filetype * @Datetime 2022/4/20 10:38 *

* * @Author vangogh * @Description 七牛上传器 * @File: qiniuuploader * @Datetime 2022/4/21 15:26 *

* * @Author vangogh * @Description 腾讯cos上传器 * @File: tencentuploader * @Datetime 2022/5/9 16:23 *

* * @Author vangogh * @Description 上传器 * @File: uploader * @Datetime 2022/4/20 10:42 *

Index

Constants

View Source
const (
	B  = 1
	KB = 1024 * B
	MB = 1024 * KB
	GB = 1024 * MB
)

Variables

View Source
var (
	FileSizeConfig = "10" // 单位M
	FileExtConfig  = []string{"jpeg", "jpg", "png", "mp4", "mp3", "gif", "bmp", "zip"}
)

Functions

This section is empty.

Types

type ALiConfig

type ALiConfig struct {
	AccessId    string
	AccessKey   string
	Endpoint    string
	BucketName  string
	Domain      string
	UnzipPrefix string // 解压前缀
	UnzipDir    string // 解压到目录
}

type ALiUploader

type ALiUploader struct {
	// contains filtered or unexported fields
}

func NewALiUploader

func NewALiUploader(config ALiConfig) (uploader *ALiUploader, err error)

func (*ALiUploader) Upload

func (alu *ALiUploader) Upload(fileData FileData, key string, fileType FileType) (string, error)

type FileData

type FileData struct {
	Body io.Reader
	Size int64
}

type FileType

type FileType string
const (
	IMAGE      FileType = "image"     // 图片文件
	VIDEO      FileType = "video"     // 视频
	AUDIO      FileType = "audio"     // 音频
	FILE       FileType = "file"      // 普通文件
	UNZIP_FILE FileType = "unzipFile" // 压缩文件,该类型表明文件需要解压
	APK_FILE   FileType = "apkFile"   // 安卓包文件
)

type HuaWeiConfig

type HuaWeiConfig struct {
	AccessKey   string // accessKey
	SecretKey   string // secretKey
	Endpoint    string // endPoint
	BucketName  string // 桶名
	Domain      string // 访问域
	UnzipPrefix string // 解压前缀
}

type HuaWeiUploader

type HuaWeiUploader struct {
	// contains filtered or unexported fields
}

func NewHuaWeiUploader

func NewHuaWeiUploader(config HuaWeiConfig) (uploader *HuaWeiUploader, err error)

func (*HuaWeiUploader) Upload

func (hwu *HuaWeiUploader) Upload(fileData FileData, key string, fileType FileType) (string, error)

type IUploader

type IUploader interface {
	Upload(data FileData, key string, fileType FileType) (string, error)
}

type LocalConfig

type LocalConfig struct {
	Domain    string // 访问地址域
	LocalPath string // 本地存储地址
	RoutePath string // 路由地址
}

type LocalUploader

type LocalUploader struct {
	// contains filtered or unexported fields
}

func NewLocalUploader

func NewLocalUploader(config LocalConfig) *LocalUploader

func (*LocalUploader) Upload

func (lu *LocalUploader) Upload(fileData FileData, key string, fileType FileType) (string, error)

type QiNiuConfig

type QiNiuConfig struct {
	Domain     string
	AccessKey  string
	SecretKey  string
	BucketName string
}

type QiNiuUploader

type QiNiuUploader struct {
	// contains filtered or unexported fields
}

func NewQiNiuUploader

func NewQiNiuUploader(config QiNiuConfig) (uploader *QiNiuUploader, err error)

func (*QiNiuUploader) Upload

func (qnu *QiNiuUploader) Upload(fileData FileData, key string, fileType FileType) (string, error)

type TencentConfig

type TencentConfig struct {
	SecretId    string // secretId
	SecretKey   string // secretKey
	BucketURL   string // 桶URL
	ServiceURL  string // 服务URL
	UnzipPrefix string // 解压文件前缀
}

type TencentUploader

type TencentUploader struct {
	// contains filtered or unexported fields
}

func NewTencentUploader

func NewTencentUploader(config TencentConfig) (uploader *TencentUploader, err error)

func (*TencentUploader) Upload

func (tcu *TencentUploader) Upload(fileData FileData, key string, fileType FileType) (string, error)

type UploadImageResp

type UploadImageResp struct {
	Url string `json:"url"`
}

type Uploader

type Uploader struct {
	// contains filtered or unexported fields
}

上传器

func NewUploader

func NewUploader() *Uploader

func (*Uploader) Md5

func (u *Uploader) Md5(plain []byte) []byte

MD5 md5 digest

func (*Uploader) RegisterUploader

func (u *Uploader) RegisterUploader(uploader IUploader)

初始化上传器

func (*Uploader) SetKeyModel

func (u *Uploader) SetKeyModel(mdKey bool)

设置md生成key

func (*Uploader) SetUploadLimit

func (u *Uploader) SetUploadLimit(fileSizeConfig string, fileExtConfig []string)

func (*Uploader) Upload

func (u *Uploader) Upload(file *multipart.FileHeader, fileType FileType) (string, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL