CloudStorage

package module
v1.0.12 Latest Latest
Warning

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

Go to latest
Published: Jul 5, 2021 License: Apache-2.0 Imports: 25 Imported by: 0

README

gitee地址:https://gitee.com/diunigedaxigua/cloud-storage

github地址:https://github.com/water-gulugulu/CloudStorage

基本介绍

上传图片,图片裁剪,缩略图等方法,本地上传,接入腾讯云,阿里云,七牛云等第三方对象存储,实现对远程图片的一些操作编辑,以及对存储桶的一些操作。

初始化➡️传入配置➡️调用方法,只需三步,即可完成整个操作

目录结构

    ├─cloud-storage(文件夹)
    │  ├─go.mod         (gomod依赖文件)
    │  ├─LICENSE        (许可)
    │  ├─Local.go  	    (本地图片操作)
    │  ├─MD5.go  	    (MD5方法)
    │  ├─Tencent.go     (腾讯云COS实现文件)

本地图片操作
// 传入本地上传配置
config := &CloudStorage.Local{
	Path: "upload/file", // 图片路径
}
// 初始化结构体来调用方法
OSS := CloudStorage.NewLocalOSS(config)

本地目前实现了以下方法:

  • UploadFile 上传文件
  • DeleteFile 删除文件
  • IsFileExist 文件是否存在
  • ImageClip 图片裁剪
  • ImageScale 图片缩略图
上传图片

初始化后就可以调用上传文件的方法来上传文件

// 传入接收到的form-data的文件流
path , filename , err := OSS.UploadFile(file)
// 返回三个参数,path:上传的图片路径,filename:上传图片文件名,err:错误

这里传入一个文件流,调用后err没有返回错误,那么在upload/file/下就会有一个上传成功的文件,这个函数也会返回对应的路径,已经保存的文件名

删除图片

这里调用删除方法

err := OSS.DeleteFile(filename)

该方法会到upload/file/filename下去找到文件将文件删除,err返回nil删除成功

裁剪图片
// 传入要裁剪的图片,宽高,裁剪的大小 以及图片的精度
path , filename , err := OSS.ImageClip(filename, width, height, x0, y0, x1, y1, quality)
// 返回三个参数,path:裁剪的图片路径,filename:裁剪的图片文件名,err:错误

这里调用裁剪图片,传入文件名,裁剪的宽高度,从x0,y0开始裁剪到x1,y1结束,设置图片的精度 如调用的是宽高不限制,使用默认值,从宽100px,高100px开始裁剪到宽200px,高200px结束,那么裁剪出来的图片就是xy:100px - 200px位置结束 裁剪成功后会返回图片路径和裁剪的文件名,裁剪文件会在原文件名后加上_small

制作缩略图
// 传入要缩放的文件名,宽高,以及精度
path , filename , err := OSS.ImageScale(filename, width, height, quality)
// 返回三个参数,path:缩略图的图片路径,filename:缩略图文件名,err:错误

这里调用缩略图的方法,传入文件名,以及要缩放的宽高,精度,缩略图设置成功后会返回三个参数,分别是缩略图的访问路径,缩略图的文件名,以及错误,缩略图的文件名会在传入的filename后加上_thumbnail来区分正常图片与缩略图

判断文件是否存在
// 传入要判断的文件名
exist := OSS.IsFileExist(filename)

这里调用判断文件是否存在方法,传入要判断的文件名,会在config传入的path中查找是否存在这个文件,存在返回true,不存在返回false

腾讯COS操作
// 传入本地上传配置
config := &CloudStorage.TencentCOS{
    Bucket:     "xxxxxx",
    Region:     "ap-shenzhen-fsi",
    SecretID:   "SecretID",
    SecretKey:  "SecretKey",
    PathPrefix: "image",
}
// 初始化结构体来调用方法
OSS := CloudStorage.NewTencentOSS(config)

设置好腾讯云COS的参数配置,初始化结构体,即可调用腾讯云COS的操作方法了 腾讯云COS目前实现了以下方法:

  • UploadFile 上传文件
  • DeleteFile 删除文件
  • GetBucketList 获取桶列表
  • GetBucketACL 获取桶权限
  • GetBucketAccelerate
  • PutBucketAccelerate
微信
微信

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func MD5V

func MD5V(str []byte) string

Types

type Local

type Local struct {
	Path string `mapstructure:"path" json:"path" yaml:"path"` // 本地文件路径
}

func (*Local) DeleteFile

func (l *Local) DeleteFile(key string) error

@author: [wulala](https://github.com/water-gulugulu) @object: *LocalUpload @function: DeleteFile @description: 删除文件 @param: key string @return: error

func (*Local) ImageClip added in v0.0.2

func (l *Local) ImageClip(filename string, width, height, x0, y0, x1, y1, quality int) (Path, FileName string, err error)

@author: [wulala](https://github.com/water-gulugulu) @author: [wulala](https://gitee.com/diunigedaxigua) @function: ClipFile @description: 图片裁剪 @param: filename string 要裁剪的文件名,会和Local.Path拼接组成文件名 @param: wi int 裁剪宽度,传0则默认裁剪宽度 如原图宽为100px x0:10 x1:90 那么成图宽为x1-x0=80px @param: hi int 裁剪高度,传0则默认裁剪高度 如原图高为100px y0:10 y1:90 那么成图高为y1-y0=80px @param: x0 int 裁剪宽坐标,从多少像素开始裁剪,如原图100px x0:10那么从10像素开始裁剪 @param: y0 int 裁剪高坐标,从多少像素开始裁剪,如原图100px y0:10那么从10像素开始裁剪 @param: x1 int 裁剪宽坐标,从x0开始到x1像素裁剪结束,如原图100px x0:10,x1:30那么从10像素开始裁剪到40像素结束 @param: y1 int 裁剪高坐标,从y0开始到y1像素裁剪结束,如原图100px y0:10,y1:30那么从10像素开始裁剪到40像素结束 @param: quality int 像素精度 百分比 @return: Path string 文件访问路径(带文件名) @return: FileName string 文件名 @return: err error 错误信息

func (*Local) ImageScale added in v0.0.2

func (l *Local) ImageScale(filename string, width, height, quality int) (Path, FileName string, err error)

@author: [wulala](https://github.com/water-gulugulu) @author: [wulala](https://gitee.com/diunigedaxigua) @function: ImageScale @description: 缩略图生成 @param: filename string 要裁剪的文件名,会和Local.Path拼接组成文件名 @param: width int 裁剪宽度,传0则默认裁剪宽度 如原图宽为100px x0:10 x1:90 那么成图宽为x1-x0=80px @param: height int 裁剪高度,传0则默认裁剪高度 如原图高为100px y0:10 y1:90 那么成图高为y1-y0=80px @param: quality int 像素精度 百分比 @return: Path string 文件访问路径(带文件名) @return: FileName string 文件名 @return: err error 错误信息

func (*Local) IsFileExist added in v0.0.2

func (l *Local) IsFileExist(filename string) bool

@author: [wulala](https://github.com/water-gulugulu) @author: [wulala](https://gitee.com/diunigedaxigua) @function: IsFileExist @description: 检查文件是否存在 @param: filename string 要检查的文件名,会和Local.Path拼接组成文件名 @return: bool true:存在,false:不存在

func (*Local) UploadFile

func (l *Local) UploadFile(file *multipart.FileHeader) (Path, FileName string, err error)

@author: [wulala](https://github.com/water-gulugulu) @object: *LocalUpload @function: UploadFile @description: 上传文件 @param: file *multipart.FileHeader @return: Path string @return: FileName string @return: err error

func (*Local) UploadFileByBase64 added in v1.0.8

func (l *Local) UploadFileByBase64(ImageContent string) (Path, Filename string, err error)

@author: [wulala](https://github.com/water-gulugulu) @author: [wulala](https://gitee.com/diunigedaxigua) @function: UploadFileByBase64 @description: 上传base64保存到图片 @param: ImageContent string 图片的base64编码字符串 @return: Path string 文件访问路径(带文件名) @return: FileName string 文件名 @return: err error 错误信息

type LocalOSS

type LocalOSS interface {
	IsFileExist(filename string) bool                                                                  // 检查文件是否存在
	UploadFile(file *multipart.FileHeader) (path, filename string, err error)                          // 上传文件
	DeleteFile(key string) error                                                                       // 删除文件
	ImageClip(filename string, wi, hi, x0, y0, x1, y1, quality int) (Path, FileName string, err error) // 裁剪图片
	ImageScale(filename string, width, height, quality int) (Path, FileName string, err error)         // 缩略图
	UploadFileByBase64(ImageContent string) (Path, Filename string, err error)                         // base64上传图片
}

本地上传

func NewLocalOSS

func NewLocalOSS(c *Local) LocalOSS

实例本地上传

type TencentCOS

type TencentCOS struct {
	Bucket     string `mapstructure:"bucket" json:"bucket" yaml:"bucket"`               // 桶名称
	Region     string `mapstructure:"region" json:"region" yaml:"region"`               // 地区
	SecretID   string `mapstructure:"secret-id" json:"secretID" yaml:"secret-id"`       // 密钥 id
	SecretKey  string `mapstructure:"secret-key" json:"secretKey" yaml:"secret-key"`    // 密钥key
	BaseURL    string `mapstructure:"base-url" json:"baseURL" yaml:"base-url"`          // 地址
	PathPrefix string `mapstructure:"path-prefix" json:"pathPrefix" yaml:"path-prefix"` // 路径前缀
	// contains filtered or unexported fields
}

TencentCOS config

func (*TencentCOS) DeleteFile

func (t *TencentCOS) DeleteFile(key string) error

@author: [wulala](https://github.com/water-gulugulu) @author: [wulala](https://gitee.com/diunigedaxigua) @object: *TencentCOS @function: DeleteFile @description: 删除Bucket里面对应key的文件 @param: key string 文件名 @return: error

func (*TencentCOS) GetBucketACL

func (t *TencentCOS) GetBucketACL() (Acl []cos.ACLGrant, err error)

@author: [wulala](https://github.com/water-gulugulu) @author: [wulala](https://gitee.com/diunigedaxigua) @object: *TencentCOS @function: GetBucketACL @description: 获取ACL访问控制列表 @return: Acl []cos.ACLGrant 获取到的ACL列表 @return: err error

func (*TencentCOS) GetBucketAccelerate

func (t *TencentCOS) GetBucketAccelerate() (result *cos.BucketGetAccelerateResult, err error)

@author: [wulala](https://github.com/water-gulugulu) @author: [wulala](https://gitee.com/diunigedaxigua) @object: *TencentCOS @function: GetBucketAccelerate @description: 获取存储桶的全球加速状态 @return: result *cos.BucketGetAccelerateResult COS返回的内容 @return: err error

func (*TencentCOS) GetBucketList

func (t *TencentCOS) GetBucketList() (buckets []cos.Bucket, err error)

@author: [wulala](https://github.com/water-gulugulu) @author: [wulala](https://gitee.com/diunigedaxigua) @object: *TencentCOS @function: GetBucketList @description: 获取当前区域所有的bucket @return: buckets []cos.Bucket 获取到的bucket列表 @return: err error

func (*TencentCOS) NewClient

func (t *TencentCOS) NewClient() *cos.Client

@author: [wulala](https://github.com/water-gulugulu) @author: [wulala](https://gitee.com/diunigedaxigua) @object: *TencentCOS @function: NewClient @description: 初始化COS链接 @param: 必须先初始化TencentCOS传入对应的配置参数 @return: *cos.Client COS链接

func (*TencentCOS) PutBucketAccelerate

func (t *TencentCOS) PutBucketAccelerate(status string) error

@author: [wulala](https://github.com/water-gulugulu) @author: [wulala](https://gitee.com/diunigedaxigua) @object: *TencentCOS @function: PutBucketAccelerate @description: 启用或者暂停存储桶的全球加速 @param: status string 枚举值:Suspended、Enabled @return: err error

func (*TencentCOS) UploadFile

func (t *TencentCOS) UploadFile(file *multipart.FileHeader) (path, filename string, err error)

@author: [wulala](https://github.com/water-gulugulu) @author: [wulala](https://gitee.com/diunigedaxigua) @object: *TencentCOS @function: UploadFile @description: 删除Bucket里面对应key的文件 @param: file *multipart.FileHeader 文件流 @return: path string 文件访问地址 @return: filename string 文件名 @return: err error

type TencentOSS

type TencentOSS interface {
	UploadFile(file *multipart.FileHeader) (path, filename string, err error) // Upload File to Tencent COS
	DeleteFile(key string) error                                              // Delete Tencent COS File
	GetBucketList() (buckets []cos.Bucket, err error)                         // GET Local Region All Bucket
	GetBucketACL() (Acl []cos.ACLGrant, err error)                            // GET Bucket ACL List
	GetBucketAccelerate() (result *cos.BucketGetAccelerateResult, err error)  // GET Bucket Accelerate
	PutBucketAccelerate(status string) error                                  // PUT Bucket Accelerate
}

TencentOSS interface

func NewTencentOSS

func NewTencentOSS(c *TencentCOS) TencentOSS

@author: [wulala](https://github.com/water-gulugulu) @author: [wulala](https://gitee.com/diunigedaxigua) @function: NewTencentOSS @description: 实现COS接口 @param: c TencentCOS 初始化COS接口参数 @return: TencentOSS

Jump to

Keyboard shortcuts

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