storage

package
v7.8.2 Latest Latest
Warning

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

Go to latest
Published: Jan 25, 2021 License: MIT Imports: 31 Imported by: 0

Documentation

Overview

这个文件兼容保留了原来storage暴露出去的变量,函数等

storage 包提供了资源的上传,管理,数据处理等功能。其中资源的上传又提供了表单上传的方式以及分片上传的方式,其中分片上传的方式还支持断点续传。

该包中提供了 BucketManager 用来进行资源管理,比如获取文件信息,文件复制,删除,重命名等,以及很多高级功能如修改文件类型, 修改文件的生命周期,修改文件的存储类型等。

该包中还提供了 FormUploader 和 ResumeUploader 来分别支持表单上传和分片上传,断点续传等功能,对于较大的文件,比如100MB以上的文件,一般 建议采用分片上传的方式来保证上传的效率和可靠性。

对于数据处理,则提供了 OperationManager,可以使用它来发送持久化数据处理请求,及查询数据处理的状态。

package storage 提供了用户存储配置(uc)方面的功能, 定义了UC API 的返回结构体类型

Index

Constants

View Source
const (
	DefaultRsHost  = "rs.qiniu.com"
	DefaultRsfHost = "rsf.qiniu.com"
	DefaultAPIHost = "api.qiniu.com"
	DefaultPubHost = "pu.qbox.me:10200"
)

资源管理相关的默认域名

View Source
const (
	// region code
	RIDHuadong      = RegionID("z0")
	RIDHuabei       = RegionID("z1")
	RIDHuanan       = RegionID("z2")
	RIDNorthAmerica = RegionID("na0")
	RIDSingapore    = RegionID("as0")
	RIDFogCnEast1   = RegionID("fog-cn-east-1")
)
View Source
const (
	// 获取下一个分片Reader失败
	ErrNextReader = "ErrNextReader"
	// 超过了最大的重试上传次数
	ErrMaxUpRetry = "ErrMaxUpRetry"
)
View Source
const (
	// 上传一个分片失败
	ErrUploadChunkFailed = "ErrUploadChunkFailed"
	// 取消了分片的上传
	ErrChunkUpCanceled = "ErrChunkUpCanceled"
)
View Source
const (
	InvalidCtx = 701 // UP: 无效的上下文(bput),可能情况:Ctx非法或者已经被淘汰(太久未使用)
)

上传进度过期错误

View Source
const UcHost = "https://uc.qbox.me"

UcHost 为查询空间相关域名的API服务地址

Variables

View Source
var (
	// ErrBucketNotExist 用户存储空间不存在
	ErrBucketNotExist = errors.New("bucket not exist")

	// ErrNoSuchFile 文件已经存在
	ErrNoSuchFile = errors.New("No such file or directory")
)
View Source
var (
	ErrInvalidPutProgress = errors.New("invalid put progress")
	ErrPutFailed          = errors.New("resumable put failed")
	ErrBadToken           = errors.New("invalid token")
)

分片上传过程中可能遇到的错误

View Source
var (
	// 华东机房
	// 兼容保留
	ZoneHuadong, _ = GetRegionByID(RIDHuadong)

	// 华北机房
	// 兼容保留
	ZoneHuabei, _ = GetRegionByID(RIDHuabei)

	// 华南机房
	// 兼容保留
	ZoneHuanan, _ = GetRegionByID(RIDHuanan)

	// 北美机房
	// 兼容保留
	ZoneBeimei, _ = GetRegionByID(RIDNorthAmerica)

	// 新加坡机房
	// 兼容保留
	ZoneXinjiapo, _ = GetRegionByID(RIDSingapore)

	// 雾存储华东机房
	// 兼容保留
	ZoneFogCnEast1, _ = GetRegionByID(RIDFogCnEast1)

	// 兼容保留
	Zone_z0 = ZoneHuadong
	// 兼容保留
	Zone_z1 = ZoneHuabei
	// 兼容保留
	Zone_z2 = ZoneHuanan
	// 兼容保留
	Zone_na0 = ZoneBeimei
	// 兼容保留
	Zone_as0 = ZoneXinjiapo
	// 兼容保留
	Zone_fog_cn_east_1 = ZoneFogCnEast1
)
View Source
var CallRet = client.CallRet
View Source
var DefaultClient = client.DefaultClient
View Source
var ErrUnmatchedChecksum = errors.New("unmatched checksum")

分片上传过程中可能遇到的错误

View Source
var ResponseError = client.ResponseError
View Source
var UserAgent = client.UserAgent

Functions

func BlockCount

func BlockCount(fsize int64) int

BlockCount 用来计算文件的分块数量

func EncodedEntry

func EncodedEntry(bucket, key string) string

EncodedEntry 生成URL Safe Base64编码的 Entry

func EncodedEntryWithoutKey

func EncodedEntryWithoutKey(bucket string) string

EncodedEntryWithoutKey 生成 key 为null的情况下 URL Safe Base64编码的Entry

func IsContextExpired

func IsContextExpired(blkPut BlkputRet) bool

IsContextExpired 检查分片上传的ctx是否过期,提前一天让它过期 因为我们认为如果断点继续上传的话,最长需要1天时间

func MakePrivateURL

func MakePrivateURL(mac *auth.Credentials, domain, key string, deadline int64) (privateURL string)

MakePrivateURL 用来生成私有空间资源下载链接

func MakePublicURL

func MakePublicURL(domain, key string) (finalUrl string)

MakePublicURL 用来生成公开空间资源下载链接

func ParsePutTime

func ParsePutTime(putTime int64) (t time.Time)

ParsePutTime 提供了将PutTime转换为 time.Time 的功能

func SetAppName

func SetAppName(userApp string) error

userApp should be [A-Za-z0-9_\ \-\.]*

func SetRegionCachePath

func SetRegionCachePath(newPath string)

func SetSettings

func SetSettings(v *Settings)

SetSettings 可以用来设置分片上传参数

func URIChangeMime

func URIChangeMime(bucket, key, newMime string) string

URIChangeMime 构建 chgm 接口的请求命令

func URIChangeType

func URIChangeType(bucket, key string, fileType int) string

URIChangeType 构建 chtype 接口的请求命令

func URICopy

func URICopy(srcBucket, srcKey, destBucket, destKey string, force bool) string

URICopy 构建 copy 接口的请求命令

func URIDelete

func URIDelete(bucket, key string) string

URIDelete 构建 delete 接口的请求命令

func URIDeleteAfterDays

func URIDeleteAfterDays(bucket, key string, days int) string

URIDeleteAfterDays 构建 deleteAfterDays 接口的请求命令

func URIMove

func URIMove(srcBucket, srcKey, destBucket, destKey string, force bool) string

URIMove 构建 move 接口的请求命令

func URIRestoreAr

func URIRestoreAr(bucket, key string, afterDay int) string

URIRestoreAr 构建 restoreAr 接口的请求命令

func URIStat

func URIStat(bucket, key string) string

URIStat 构建 stat 接口的请求命令

Types

type AsyncFetchParam

type AsyncFetchParam struct {
	Url              string `json:"url"`
	Host             string `json:"host,omitempty"`
	Bucket           string `json:"bucket"`
	Key              string `json:"key,omitempty"`
	Md5              string `json:"md5,omitempty"`
	Etag             string `json:"etag,omitempty"`
	CallbackURL      string `json:"callbackurl,omitempty"`
	CallbackBody     string `json:"callbackbody,omitempty"`
	CallbackBodyType string `json:"callbackbodytype,omitempty"`
	FileType         int    `json:"file_type,omitempty"`
}

type AsyncFetchRet

type AsyncFetchRet struct {
	Id   string `json:"id"`
	Wait int    `json:"wait"`
}

type Base64PutExtra

type Base64PutExtra struct {
	// 可选,用户自定义参数,必须以 "x:" 开头。若不以x:开头,则忽略。
	Params map[string]string

	// 可选,当为 "" 时候,服务端自动判断。
	MimeType string
}

Base64PutExtra 为Base64上传的额外可选项

type Base64Uploader

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

Base64Uploader 表示一个Base64上传对象

func NewBase64Uploader

func NewBase64Uploader(cfg *Config) *Base64Uploader

NewBase64Uploader 用来构建一个Base64上传的对象

func NewBase64UploaderEx

func NewBase64UploaderEx(cfg *Config, clt *client.Client) *Base64Uploader

NewBase64UploaderEx 用来构建一个Base64上传的对象

func (*Base64Uploader) Put

func (p *Base64Uploader) Put(
	ctx context.Context, ret interface{}, uptoken, key string, base64Data []byte, extra *Base64PutExtra) (err error)

Put 用来以Base64方式上传一个文件

ctx 是请求的上下文。 ret 是上传成功后返回的数据。如果 uptoken 中没有设置 callbackUrl 或 returnBody,那么返回的数据结构是 PutRet 结构。 uptoken 是由业务服务器颁发的上传凭证。 key 是要上传的文件访问路径。比如:"foo/bar.jpg"。注意我们建议 key 不要以 '/' 开头。另外,key 为空字符串是合法的。 base64Data 是要上传的Base64数据,一般为图片数据的Base64编码字符串 extra 是上传的一些可选项,可以指定为nil。详细见 Base64PutExtra 结构的描述。

func (*Base64Uploader) PutWithoutKey

func (p *Base64Uploader) PutWithoutKey(
	ctx context.Context, ret interface{}, uptoken string, base64Data []byte, extra *Base64PutExtra) (err error)

PutWithoutKey 用来以Base64方式上传一个文件,保存的文件名以文件的内容hash作为文件名

type BatchOpRet

type BatchOpRet struct {
	Code int `json:"code,omitempty"`
	Data struct {
		Hash     string `json:"hash"`
		Fsize    int64  `json:"fsize"`
		PutTime  int64  `json:"putTime"`
		MimeType string `json:"mimeType"`
		Type     int    `json:"type"`
		Error    string `json:"error"`
	} `json:"data,omitempty"`
}

BatchOpRet 为批量执行操作的返回值 批量操作支持 stat,copy,delete,move,chgm,chtype,deleteAfterDays几个操作 其中 stat 为获取文件的基本信息,如果文件存在则返回基本信息,如果文件不存在返回 error 。 其他的操作,如果成功,则返回 code,不成功会同时返回 error 信息,可以根据 error 信息来判断问题所在。

type BlkputRet

type BlkputRet struct {
	Ctx       string `json:"ctx"`
	Checksum  string `json:"checksum"`
	Crc32     uint32 `json:"crc32"`
	Offset    uint32 `json:"offset"`
	Host      string `json:"host"`
	ExpiredAt int64  `json:"expired_at"`
	// contains filtered or unexported fields
}

BlkputRet 表示分片上传每个片上传完毕的返回值

type BucketEventRule

type BucketEventRule struct {
	// 规则名字
	Name string `json:"name"`

	// 匹配文件前缀
	Prefix string `json:"prefix"`

	// 匹配文件后缀
	Suffix string `json:"suffix"`

	// 事件类型
	// put,mkfile,delete,copy,move,append,disable,enable,deleteMarkerCreate
	Event []string `json:"event"`

	// 回调通知地址, 可以指定多个
	CallbackURL []string `json:"callback_urls`

	// 用户的AccessKey, 可选, 设置的话会对通知请求用对应的ak、sk进行签名
	AccessKey string `json:"access_key"`

	// 回调通知的请求HOST, 可选
	Host string `json:"host"`
}

BucketEnvent 定义了存储空间发生事件时候的通知规则 比如调用了存储的"delete"删除接口删除文件, 这个是一个事件; 当这个事件发生的时候, 我们要对哪些文件,做什么处理,是否要作回调, 都可以通过这个结构体配置

func (*BucketEventRule) Params

func (r *BucketEventRule) Params(bucket string) map[string][]string

Params 返回一个hash结构

type BucketInfo

type BucketInfo struct {
	// 镜像回源地址, 接口返回的多个地址以;分割
	Source string `json:"source"`

	// 镜像回源的时候请求头中的HOST
	Host string `json:"host"`

	// 镜像回源地址过期时间(秒数), 现在这个功能没有实现,因此这个字段现在是没有意义的
	Expires int `json:"expires"`

	// 是否开启了原图保护
	Protected int `json:"protected"`

	// 是否是私有空间
	Private int `json:"private"`

	// 如果NoIndexPage是false表示开启了空间根目录index.html
	// 如果是true, 表示没有开启
	// 开启了根目录下的index.html, 文件将会被作为默认首页展示
	NoIndexPage int `json:"no_index_page"`

	// 在规定的时效内使客户端缓存更新的效果
	MaxAge int `json:"max_age"`

	// 图片样式分隔符, 接口返回的可能有多个
	Separator string `json:"separator"`

	// 图片样式, map中的key表示图片样式命令名字
	// map中的value表示图片样式命令的内容
	Styles map[string]string `json:"styles"`

	// 防盗链模式
	// 1 - 表示设置了防盗链的referer白名单
	// 2 - 表示设置了防盗链的referer黑名单
	AntiLeechMode int `json:"anti_leech_mode"`

	// 使用token签名进行防盗链
	// 0 - 表示关闭
	// 1 - 表示开启
	TokenAntiLeechMode int `json:"token_anti_leech"`

	// 防盗链referer白名单列表
	ReferWl []string `json:"refer_wl"`

	// 防盗链referer黑名单列表
	ReferBl []string `json:"refer_bl"`

	// 在源站支持的情况下开启源站的Referer防盗链
	EnableSource bool `json:"source_enabled"`

	// 是否允许空的referer访问
	NoRefer bool `json:"no_refer"`

	// 用于防盗链token的生成
	MacKey string `json:"mac_key"`

	// 用于防盗链token的生成
	MacKey2 string `json:"mac_key2"`

	// 存储区域, 兼容保留
	Zone string

	// 存储区域
	Region string
}

BucketInfo 存储空间的详细信息

func (*BucketInfo) BlackListSet

func (b *BucketInfo) BlackListSet() bool

BlackListSet 是否设置了防盗链黑名单

func (*BucketInfo) ImageSources

func (b *BucketInfo) ImageSources() (srcs []string)

ImageSources 返回多个镜像回源地址的列表

func (*BucketInfo) IndexPageOn

func (b *BucketInfo) IndexPageOn() bool

IndexPageOn 返回空间是否开启了根目录下的index.html

func (*BucketInfo) IsPrivate

func (b *BucketInfo) IsPrivate() bool

IsPrivate 返回布尔值 如果是私有空间, 返回 true, 否则返回false

func (*BucketInfo) ProtectedOn

func (b *BucketInfo) ProtectedOn() bool

ProtectedOn 返回true or false 如果开启了原图保护,返回true, 否则false

func (*BucketInfo) Separators

func (b *BucketInfo) Separators() (ret []rune)

Separators 返回分隔符列表

func (*BucketInfo) TokenAntiLeechModeOn

func (b *BucketInfo) TokenAntiLeechModeOn() bool

TokenAntiLeechModeOn 返回是否使用token签名防盗链开启了

func (*BucketInfo) WhiteListSet

func (b *BucketInfo) WhiteListSet() bool

WhiteListSet 是否设置了防盗链白名单

type BucketLifeCycleRule

type BucketLifeCycleRule struct {
	// 规则名称, 在设置的bucket中规则名称需要是唯一的
	// 同时长度小于50, 不能为空
	// 由字母,数字和下划线组成
	Name string `json:"name"`

	// 以该前缀开头的文件应用此规则
	Prefix string `json:"prefix"`

	// 指定存储空间内的文件多少天后删除
	// 0 - 不删除
	// > 0 表示多少天后删除
	DeleteAfterDays int `json:"delete_after_days"`

	// 在多少天后转低频存储
	// 0  - 表示不转低频
	// < 0 表示上传的文件立即使用低频存储
	// > 0 表示转低频的天数
	ToLineAfterDays int `json:"to_line_after_days"`
}

BucketLifeCycleRule 定义了关于七牛存储空间关于生命周期的一些配置,规则。 比如存储空间中文件可以设置多少天后删除,多少天后转低频存储等等

type BucketManager

type BucketManager struct {
	Client *client.Client
	Mac    *auth.Credentials
	Cfg    *Config
}

BucketManager 提供了对资源进行管理的操作

func NewBucketManager

func NewBucketManager(mac *auth.Credentials, cfg *Config) *BucketManager

NewBucketManager 用来构建一个新的资源管理对象

func NewBucketManagerEx

func NewBucketManagerEx(mac *auth.Credentials, cfg *Config, clt *client.Client) *BucketManager

NewBucketManagerEx 用来构建一个新的资源管理对象

func (*BucketManager) AddBucketEvent

func (m *BucketManager) AddBucketEvent(bucket string, rule *BucketEventRule) (err error)

AddBucketEvent 增加存储空间事件通知规则

func (*BucketManager) AddBucketLifeCycleRule

func (m *BucketManager) AddBucketLifeCycleRule(bucketName string, lifeCycleRule *BucketLifeCycleRule) (err error)

SetBucketLifeCycleRule 设置存储空间内文件的生命周期规则

func (*BucketManager) AddCorsRules

func (m *BucketManager) AddCorsRules(bucket string, corsRules []CorsRule) (err error)

AddCorsRules 设置指定存储空间的跨域规则

func (*BucketManager) ApiHost

func (m *BucketManager) ApiHost(bucket string) (apiHost string, err error)

func (*BucketManager) ApiReqHost

func (m *BucketManager) ApiReqHost(bucket string) (reqHost string, err error)

func (*BucketManager) AsyncFetch

func (m *BucketManager) AsyncFetch(param AsyncFetchParam) (ret AsyncFetchRet, err error)

func (*BucketManager) Batch

func (m *BucketManager) Batch(operations []string) (batchOpRet []BatchOpRet, err error)

Batch 接口提供了资源管理的批量操作,支持 stat,copy,move,delete,chgm,chtype,deleteAfterDays几个接口

func (*BucketManager) BucketInfosInRegion

func (m *BucketManager) BucketInfosInRegion(region RegionID, statistics bool) (bucketInfos []BucketSummary, err error)

BucketInfosForRegion 获取指定区域的该用户的所有bucketInfo信息

func (*BucketManager) Buckets

func (m *BucketManager) Buckets(shared bool) (buckets []string, err error)

Buckets 用来获取空间列表,如果指定了 shared 参数为 true,那么一同列表被授权访问的空间

func (*BucketManager) ChangeMime

func (m *BucketManager) ChangeMime(bucket, key, newMime string) (err error)

ChangeMime 用来更新文件的MimeType

func (*BucketManager) ChangeType

func (m *BucketManager) ChangeType(bucket, key string, fileType int) (err error)

ChangeType 用来更新文件的存储类型,0 表示普通存储,1 表示低频存储,2 表示归档存储

func (*BucketManager) ClearTagging

func (m *BucketManager) ClearTagging(bucket string) error

ClearTagging 清空 Bucket 标签

func (*BucketManager) Copy

func (m *BucketManager) Copy(srcBucket, srcKey, destBucket, destKey string, force bool) (err error)

Copy 用来创建已有空间中的文件的一个新的副本

func (*BucketManager) CreateBucket

func (m *BucketManager) CreateBucket(bucketName string, regionID RegionID) error

CreateBucket 创建一个七牛存储空间

func (*BucketManager) DelBucketEvent

func (m *BucketManager) DelBucketEvent(bucket, ruleName string) (err error)

DelBucketEvent 删除指定存储空间的通知事件规则

func (*BucketManager) DelBucketLifeCycleRule

func (m *BucketManager) DelBucketLifeCycleRule(bucketName, ruleName string) (err error)

DelBucketLifeCycleRule 删除特定存储空间上设定的规则

func (*BucketManager) Delete

func (m *BucketManager) Delete(bucket, key string) (err error)

Delete 用来删除空间中的一个文件

func (*BucketManager) DeleteAfterDays

func (m *BucketManager) DeleteAfterDays(bucket, key string, days int) (err error)

DeleteAfterDays 用来更新文件生命周期,如果 days 设置为0,则表示取消文件的定期删除功能,永久存储

func (*BucketManager) DropBucket

func (m *BucketManager) DropBucket(bucketName string) (err error)

DropBucket 删除七牛存储空间

func (*BucketManager) Fetch

func (m *BucketManager) Fetch(resURL, bucket, key string) (fetchRet FetchRet, err error)

Fetch 根据提供的远程资源链接来抓取一个文件到空间并已指定文件名保存

func (*BucketManager) FetchWithoutKey

func (m *BucketManager) FetchWithoutKey(resURL, bucket string) (fetchRet FetchRet, err error)

FetchWithoutKey 根据提供的远程资源链接来抓取一个文件到空间并以文件的内容hash作为文件名

func (*BucketManager) GetBucketEvent

func (m *BucketManager) GetBucketEvent(bucket string) (rule []BucketEventRule, err error)

GetBucketEvent 获取指定存储空间的事件通知规则

func (*BucketManager) GetBucketInfo

func (m *BucketManager) GetBucketInfo(bucketName string) (bucketInfo BucketInfo, err error)

GetBucketInfo 返回BucketInfo结构

func (*BucketManager) GetBucketLifeCycleRule

func (m *BucketManager) GetBucketLifeCycleRule(bucketName string) (rules []BucketLifeCycleRule, err error)

GetBucketLifeCycleRule 获取指定空间上设置的生命周期规则

func (*BucketManager) GetBucketQuota

func (m *BucketManager) GetBucketQuota(bucket string) (quota BucketQuota, err error)

GetBucketQuota 获取存储空间的配额信息

func (*BucketManager) GetCorsRules

func (m *BucketManager) GetCorsRules(bucket string) (corsRules []CorsRule, err error)

GetCorsRules 获取指定存储空间的跨域规则

func (*BucketManager) GetTagging

func (m *BucketManager) GetTagging(bucket string) (tags map[string]string, err error)

GetTagging 获取 Bucket 标签

func (*BucketManager) IoReqHost

func (m *BucketManager) IoReqHost(bucket string) (reqHost string, err error)

func (*BucketManager) IovipHost

func (m *BucketManager) IovipHost(bucket string) (iovipHost string, err error)

func (*BucketManager) ListBucket

func (m *BucketManager) ListBucket(bucket, prefix, delimiter, marker string) (retCh chan listFilesRet2, err error)

ListBucket 用来获取空间文件列表,可以根据需要指定文件的前缀 prefix,文件的目录 delimiter,流式返回每条数据。

func (*BucketManager) ListBucketContext

func (m *BucketManager) ListBucketContext(ctx context.Context, bucket, prefix, delimiter, marker string) (retCh chan listFilesRet2, err error)

ListBucketContext 用来获取空间文件列表,可以根据需要指定文件的前缀 prefix,文件的目录 delimiter,流式返回每条数据。 接受的context可以用来取消列举操作

func (*BucketManager) ListBucketDomains

func (m *BucketManager) ListBucketDomains(bucket string) (info []DomainInfo, err error)

ListBucketDomains 返回绑定在存储空间中的域名信息

func (*BucketManager) ListFiles

func (m *BucketManager) ListFiles(bucket, prefix, delimiter, marker string,
	limit int) (entries []ListItem, commonPrefixes []string, nextMarker string, hasNext bool, err error)

ListFiles 用来获取空间文件列表,可以根据需要指定文件的前缀 prefix,文件的目录 delimiter,循环列举的时候下次 列举的位置 marker,以及每次返回的文件的最大数量limit,其中limit最大为1000。

func (*BucketManager) MakeBucketPrivate

func (m *BucketManager) MakeBucketPrivate(bucket string) error

MakeBucketPrivate 设置空间为私有空间

func (*BucketManager) MakeBucketPublic

func (m *BucketManager) MakeBucketPublic(bucket string) error

MakeBucketPublic 设置空间为公有空间

func (*BucketManager) Move

func (m *BucketManager) Move(srcBucket, srcKey, destBucket, destKey string, force bool) (err error)

Move 用来将空间中的一个文件移动到新的空间或者重命名

func (*BucketManager) Prefetch

func (m *BucketManager) Prefetch(bucket, key string) (err error)

Prefetch 用来同步镜像空间的资源和镜像源资源内容

func (*BucketManager) RestoreAr

func (m *BucketManager) RestoreAr(bucket, key string, freezeAfterDays int) (err error)

RestoreAr 解冻归档存储类型的文件,可设置解冻有效期1~7天, 完成解冻任务通常需要1~5分钟

func (*BucketManager) RsHost

func (m *BucketManager) RsHost(bucket string) (rsHost string, err error)

func (*BucketManager) RsReqHost

func (m *BucketManager) RsReqHost(bucket string) (reqHost string, err error)

func (*BucketManager) RsfHost

func (m *BucketManager) RsfHost(bucket string) (rsfHost string, err error)

func (*BucketManager) RsfReqHost

func (m *BucketManager) RsfReqHost(bucket string) (reqHost string, err error)

func (*BucketManager) SetBucketAccessMode

func (m *BucketManager) SetBucketAccessMode(bucket string, mode int) error

mode - 1 表示设置空间为私有空间, 私有空间访问需要鉴权 mode - 0 表示设置空间为公开空间

func (*BucketManager) SetBucketAccessStyle

func (m *BucketManager) SetBucketAccessStyle(bucket string, mode int) error

SetBucketAccessStyle 可以用来开启或关闭制定存储空间的原图保护 mode - 1 ==> 开启原图保护 mode - 0 ==> 关闭原图保护

func (*BucketManager) SetBucketMaxAge

func (m *BucketManager) SetBucketMaxAge(bucket string, maxAge int64) error

SetBucketMaxAge 设置指定存储空间的MaxAge响应头 maxAge <= 0时,表示使用默认值31536000

func (*BucketManager) SetBucketQuota

func (m *BucketManager) SetBucketQuota(bucket string, size, count int64) (err error)

SetBucketQuota 设置存储空间的配额限制 配额限制主要是两块, 空间存储量的限制和空间文件数限制

func (*BucketManager) SetImage

func (m *BucketManager) SetImage(siteURL, bucket string) (err error)

SetImage 用来设置空间镜像源

func (*BucketManager) SetImageWithHost

func (m *BucketManager) SetImageWithHost(siteURL, bucket, host string) (err error)

SetImageWithHost 用来设置空间镜像源,额外添加回源Host头部

func (*BucketManager) SetReferAntiLeechMode

func (m *BucketManager) SetReferAntiLeechMode(bucketName string, refererAntiLeechConfig *ReferAntiLeechConfig) (err error)

SetReferAntiLeechMode 配置存储空间referer防盗链模式

func (*BucketManager) SetTagging

func (m *BucketManager) SetTagging(bucket string, tags map[string]string) error

该方法为覆盖所有 Bucket 上之前设置的标签,标签 Key 最大 64 字节,Value 最大 128 字节,均不能为空,且区分大小写 Key 不能以 kodo 为前缀,Key 和 Value 的字符只能为:字母,数字,空格,+,-,=,.,_,:,/,@,不能支持中文

func (*BucketManager) Stat

func (m *BucketManager) Stat(bucket, key string) (info FileInfo, err error)

Stat 用来获取一个文件的基本信息

func (*BucketManager) TurnOffBucketProtected

func (m *BucketManager) TurnOffBucketProtected(bucket string) error

TurnOffBucketProtected 关闭指定空间的原图保护

func (*BucketManager) TurnOffIndexPage

func (m *BucketManager) TurnOffIndexPage(bucket string) error

TurnOnIndexPage 关闭默认首页

func (*BucketManager) TurnOnBucketProtected

func (m *BucketManager) TurnOnBucketProtected(bucket string) error

TurnOffBucketProtected 开启指定存储空间的原图保护

func (*BucketManager) TurnOnIndexPage

func (m *BucketManager) TurnOnIndexPage(bucket string) error

TurnOnIndexPage 设置默认首页

func (*BucketManager) UnsetImage

func (m *BucketManager) UnsetImage(bucket string) (err error)

UnsetImage 用来取消空间镜像源设置

func (*BucketManager) UpdateBucketEnvent

func (m *BucketManager) UpdateBucketEnvent(bucket string, rule *BucketEventRule) (err error)

UpdateBucketEnvent 更新指定存储空间的事件通知规则

func (*BucketManager) UpdateBucketLifeCycleRule

func (m *BucketManager) UpdateBucketLifeCycleRule(bucketName string, rule *BucketLifeCycleRule) (err error)

UpdateBucketLifeCycleRule 更新特定存储空间上的生命周期规则

func (*BucketManager) UpdateObjectStatus

func (m *BucketManager) UpdateObjectStatus(bucketName string, key string, enable bool) error

请求包:

POST /chstatus/<EncodedEntry>/status/<status> status:0表示启用,1表示禁用 返回包(JSON):

200 OK 当<EncodedEntryURI>解析失败,返回400 Bad Request {"error":"invalid argument"} 当<EncodedEntryURI>不符合UTF-8编码,返回400 Bad Request {"error":"key must be utf8 encoding"} 当文件不存在时,返回612 status code 612 {"error":"no such file or directory"} 当文件当前状态和设置的状态已经一致,返回400 {"error":"already enabled"}或400 {"error":"already disabled"}

func (*BucketManager) Zone

func (m *BucketManager) Zone(bucket string) (z *Zone, err error)

type BucketQuota

type BucketQuota struct {

	// 空间存储量配额信息
	Size int64

	// 空间文件数配置信息
	Count int64
}

BucketQuota 七牛存储空间的配额信息

type BucketSummary

type BucketSummary struct {
	// 存储空间名字
	Name string     `json:"name"`
	Info BucketInfo `json:"info"`
}

BucketSummary 存储空间信息

type BucketTag

type BucketTag struct {
	Key   string `json:"Key"`
	Value string `json:"Value"`
}

type BucketTagging

type BucketTagging struct {
	Tags []BucketTag `json:"Tags"`
}

BucketTagging 为 Bucket 设置标签

type Chunk

type Chunk struct {
	// 要上传的块数据
	Body io.ReadSeeker

	// 该片数据所属的块的大小
	BlkSize int

	// 将大的数据切成4M一块,每个块都有一个index
	// 该片数据所属的块的index
	Index int

	// 上传该片发生的错误
	Err error

	// 是否调用了mkblk接口在后台创建了该片所属的块
	Created bool

	// 上传块的返回值
	Ret *BlkputRet
}

Chunk表示要上传的数据块, 该片的大小不能大于4M 上传块的过程: 1. 调用接口在七牛后端创建块 2. 上传数据到该块 详细可以参考 https://developer.qiniu.com/kodo/api/1286/mkblk

func (*Chunk) ChunkLength

func (b *Chunk) ChunkLength() (int, error)

BlockLength 返回实际要上传的数据的长度

func (*Chunk) Reset

func (b *Chunk) Reset() error

Reset 重置Body和Err

func (*Chunk) ResetBody

func (b *Chunk) ResetBody() error

ResetBody 重置Body到开头

func (*Chunk) ShouldRetry

func (b *Chunk) ShouldRetry() bool

ShouldRetry 是否需要重新上传

type ChunkPutRetryer

type ChunkPutRetryer interface {
	Retry(ck *Chunk)
}

ChunkPutRetryer 上传分片失败时候重试接口

type Client

type Client = client.Client

type Config

type Config struct {
	//兼容保留
	Zone *Region //空间所在的存储区域

	Region *Region

	// 如果设置的Host本身是以http://开头的,又设置了该字段为true,那么优先使用该字段,使用https协议
	// 同理如果该字段为false, 但是设置的host以https开头,那么使用http协议通信
	UseHTTPS      bool   //是否使用https域名
	UseCdnDomains bool   //是否使用cdn加速域名
	CentralRsHost string //中心机房的RsHost,用于list bucket

	// 兼容保留
	RsHost  string
	RsfHost string
	UpHost  string
	ApiHost string
	IoHost  string
}

Config 为文件上传,资源管理等配置

func (*Config) ApiReqHost

func (c *Config) ApiReqHost() string

获取apiHost 优先使用Zone中的Host信息,如果Zone中的host信息没有配置,那么使用Config中的Host信息

func (*Config) GetRegion

func (c *Config) GetRegion() *Region

GetRegion返回一个Region指针 默认返回最新的Region, 如果该字段没有,那么返回兼容保留的Zone, 如果都为nil, 就返回nil

func (*Config) RsReqHost

func (c *Config) RsReqHost() string

获取RsHost 优先使用Zone中的Host信息,如果Zone中的host信息没有配置,那么使用Config中的Host信息

func (*Config) RsfReqHost

func (c *Config) RsfReqHost() string

获取rsfHost 优先使用Zone中的Host信息,如果Zone中的host信息没有配置,那么使用Config中的Host信息

type CorsRule

type CorsRule struct {

	// allowed_orgin: 允许的域名。必填;支持通配符*;*表示全部匹配;只有第一个*生效;需要设置"Scheme";大小写敏感。例如
	//   规则:http://*.abc.*.com 请求:"http://test.abc.test.com" 结果:不通过
	//   规则:"http://abc.com" 请求:"https://abc.com"/"abc.com" 结果:不通过
	//   规则:"abc.com" 请求:"http://abc.com" 结果:不通过
	AllowedOrigin []string `json:"allowed_origin"`

	// allowed_method: 允许的方法。必填;不支持通配符;大小写不敏感;
	AllowedMethod []string `json:"allowed_method"`

	// allowed_header: 允许的header。选填;支持通配符*,但只能是单独的*,表示允许全部header,其他*不生效;空则不允许任何header;大小写不敏感;
	AllowedHeader []string `json:"allowed_header"`

	// 暴露的header。选填;不支持通配符;X-Log, X-Reqid是默认会暴露的两个header;其他的header如果没有设置,则不会暴露;大小写不敏感;
	ExposedHeader []string `json:"exposed_header"`

	// max_age: 结果可以缓存的时间。选填;空则不缓存
	MaxAge int64 `json:"max_age"`
}

如果没有设置任何corsRules,那么默认允许所有的跨域请求 参考: https://www.w3.org/TR/cors/

type DomainInfo

type DomainInfo struct {
	Domain string `json:"domain"`

	// 存储空间名字
	Tbl string `json:"tbl"`

	// 用户UID
	Owner   int  `json:"uid"`
	Refresh bool `json:"refresh"`
	Ctime   int  `json:"ctime"`
	Utime   int  `json:"utime"`
}

DomainInfo 是绑定在存储空间上的域名的具体信息

type ErrorInfo

type ErrorInfo = client.ErrorInfo

type FetchRet

type FetchRet struct {
	Hash     string `json:"hash"`
	Fsize    int64  `json:"fsize"`
	MimeType string `json:"mimeType"`
	Key      string `json:"key"`
}

FetchRet 资源抓取的返回值

func (*FetchRet) String

func (r *FetchRet) String() string

type FileInfo

type FileInfo struct {
	Hash     string `json:"hash"`
	Fsize    int64  `json:"fsize"`
	PutTime  int64  `json:"putTime"`
	MimeType string `json:"mimeType"`
	Type     int    `json:"type"`
}

FileInfo 文件基本信息

func (*FileInfo) String

func (f *FileInfo) String() string

type FileRecorder

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

func NewFileRecorder

func NewFileRecorder(directoryPath string) (fileRecorder *FileRecorder, err error)

func (*FileRecorder) Delete

func (fileRecorder *FileRecorder) Delete(key string) error

func (*FileRecorder) GenerateRecorderKey

func (fileRecorder *FileRecorder) GenerateRecorderKey(keyInfos []string, sourceFileInfo os.FileInfo) string

func (*FileRecorder) Get

func (fileRecorder *FileRecorder) Get(key string) ([]byte, error)

func (*FileRecorder) Set

func (fileRecorder *FileRecorder) Set(key string, data []byte) error

type FopResult

type FopResult struct {
	Cmd   string   `json:"cmd"`
	Code  int      `json:"code"`
	Desc  string   `json:"desc"`
	Error string   `json:"error,omitempty"`
	Hash  string   `json:"hash,omitempty"`
	Key   string   `json:"key,omitempty"`
	Keys  []string `json:"keys,omitempty"`
}

FopResult 云处理操作列表,包含每个云处理操作的状态信息

type FormUploader

type FormUploader struct {
	Client *client.Client
	Cfg    *Config
}

FormUploader 表示一个表单上传的对象

func NewFormUploader

func NewFormUploader(cfg *Config) *FormUploader

NewFormUploader 用来构建一个表单上传的对象

func NewFormUploaderEx

func NewFormUploaderEx(cfg *Config, clt *client.Client) *FormUploader

NewFormUploaderEx 用来构建一个表单上传的对象

func (*FormUploader) Put

func (p *FormUploader) Put(
	ctx context.Context, ret interface{}, uptoken, key string, data io.Reader, size int64, extra *PutExtra) (err error)

Put 用来以表单方式上传一个文件。

ctx 是请求的上下文。 ret 是上传成功后返回的数据。如果 uptoken 中没有设置 callbackUrl 或 returnBody,那么返回的数据结构是 PutRet 结构。 uptoken 是由业务服务器颁发的上传凭证。 key 是要上传的文件访问路径。比如:"foo/bar.jpg"。注意我们建议 key 不要以 '/' 开头。另外,key 为空字符串是合法的。 data 是文件内容的访问接口(io.Reader)。 fsize 是要上传的文件大小。 extra 是上传的一些可选项。可以指定为nil。详细见 PutExtra 结构的描述。

func (*FormUploader) PutFile

func (p *FormUploader) PutFile(
	ctx context.Context, ret interface{}, uptoken, key, localFile string, extra *PutExtra) (err error)

PutFile 用来以表单方式上传一个文件,和 Put 不同的只是一个通过提供文件路径来访问文件内容,一个通过 io.Reader 来访问。

ctx 是请求的上下文。 ret 是上传成功后返回的数据。如果 uptoken 中没有设置 callbackUrl 或 returnBody,那么返回的数据结构是 PutRet 结构。 uptoken 是由业务服务器颁发的上传凭证。 key 是要上传的文件访问路径。比如:"foo/bar.jpg"。注意我们建议 key 不要以 '/' 开头。另外,key 为空字符串是合法的。 localFile 是要上传的文件的本地路径。 extra 是上传的一些可选项,可以指定为nil。详细见 PutExtra 结构的描述。

func (*FormUploader) PutFileWithoutKey

func (p *FormUploader) PutFileWithoutKey(
	ctx context.Context, ret interface{}, uptoken, localFile string, extra *PutExtra) (err error)

PutFileWithoutKey 用来以表单方式上传一个文件。不指定文件上传后保存的key的情况下,文件命名方式首先看看 uptoken 中是否设置了 saveKey,如果设置了 saveKey,那么按 saveKey 要求的规则生成 key,否则自动以文件的 hash 做 key。 和 Put 不同的只是一个通过提供文件路径来访问文件内容,一个通过 io.Reader 来访问。

ctx 是请求的上下文。 ret 是上传成功后返回的数据。如果 uptoken 中没有设置 CallbackUrl 或 ReturnBody,那么返回的数据结构是 PutRet 结构。 uptoken 是由业务服务器颁发的上传凭证。 localFile 是要上传的文件的本地路径。 extra 是上传的一些可选项。可以指定为nil。详细见 PutExtra 结构的描述。

func (*FormUploader) PutWithoutKey

func (p *FormUploader) PutWithoutKey(
	ctx context.Context, ret interface{}, uptoken string, data io.Reader, size int64, extra *PutExtra) (err error)

PutWithoutKey 用来以表单方式上传一个文件。不指定文件上传后保存的key的情况下,文件命名方式首先看看 uptoken 中是否设置了 saveKey, 如果设置了 saveKey,那么按 saveKey 要求的规则生成 key,否则自动以文件的 hash 做 key。

ctx 是请求的上下文。 ret 是上传成功后返回的数据。如果 uptoken 中没有设置 CallbackUrl 或 ReturnBody,那么返回的数据结构是 PutRet 结构。 uptoken 是由业务服务器颁发的上传凭证。 data 是文件内容的访问接口(io.Reader)。 fsize 是要上传的文件大小。 extra 是上传的一些可选项。详细见 PutExtra 结构的描述。

func (*FormUploader) UpHost

func (p *FormUploader) UpHost(ak, bucket string) (upHost string, err error)

type InitPartsRet

type InitPartsRet struct {
	UploadID string `json:"uploadId"`
}

InitPartsRet 表示分片上传 v2 初始化完毕的返回值

type ListItem

type ListItem struct {
	Key      string `json:"key"`
	Hash     string `json:"hash"`
	Fsize    int64  `json:"fsize"`
	PutTime  int64  `json:"putTime"`
	MimeType string `json:"mimeType"`
	Type     int    `json:"type"`
	EndUser  string `json:"endUser"`
}

ListItem 为文件列举的返回值

func (*ListItem) IsEmpty

func (l *ListItem) IsEmpty() (empty bool)

接口可能返回空的记录

func (*ListItem) String

func (l *ListItem) String() string

type OperationManager

type OperationManager struct {
	Client *client.Client
	Mac    *auth.Credentials
	Cfg    *Config
}

OperationManager 提供了数据处理相关的方法

func NewOperationManager

func NewOperationManager(mac *auth.Credentials, cfg *Config) *OperationManager

NewOperationManager 用来构建一个新的数据处理对象

func NewOperationManagerEx

func NewOperationManagerEx(mac *auth.Credentials, cfg *Config, clt *client.Client) *OperationManager

NewOperationManager 用来构建一个新的数据处理对象

func (*OperationManager) ApiHost

func (m *OperationManager) ApiHost(bucket string) (apiHost string, err error)

func (*OperationManager) Pfop

func (m *OperationManager) Pfop(bucket, key, fops, pipeline, notifyURL string,
	force bool) (persistentID string, err error)

Pfop 持久化数据处理

bucket		资源空间
key   		源资源名
fops		云处理操作列表,
notifyURL	处理结果通知接收URL
pipeline	多媒体处理队列名称
force		强制执行数据处理

func (*OperationManager) Prefop

func (m *OperationManager) Prefop(persistentID string) (ret PrefopRet, err error)

Prefop 持久化处理状态查询

func (*OperationManager) PrefopApiHost

func (m *OperationManager) PrefopApiHost(persistentID string) (apiHost string)

type PfopRet

type PfopRet struct {
	PersistentID string `json:"persistentId,omitempty"`
}

PfopRet 为数据处理请求的回复内容

type PrefopRet

type PrefopRet struct {
	ID          string `json:"id"`
	Code        int    `json:"code"`
	Desc        string `json:"desc"`
	InputBucket string `json:"inputBucket,omitempty"`
	InputKey    string `json:"inputKey,omitempty"`
	Pipeline    string `json:"pipeline,omitempty"`
	Reqid       string `json:"reqid,omitempty"`
	Items       []FopResult
}

PrefopRet 为数据处理请求的状态查询回复内容

func (*PrefopRet) String

func (r *PrefopRet) String() string

type PutExtra

type PutExtra struct {
	// 可选,用户自定义参数,必须以 "x:" 开头。若不以x:开头,则忽略。
	Params map[string]string

	UpHost string

	// 可选,当为 "" 时候,服务端自动判断。
	MimeType string

	// 上传事件:进度通知。这个事件的回调函数应该尽可能快地结束。
	OnProgress func(fsize, uploaded int64)
}

PutExtra 为表单上传的额外可选项

type PutPolicy

type PutPolicy struct {
	Scope               string `json:"scope"`
	Expires             uint64 `json:"deadline"` // 截止时间(以秒为单位)
	IsPrefixalScope     int    `json:"isPrefixalScope,omitempty"`
	InsertOnly          uint16 `json:"insertOnly,omitempty"` // 若非0, 即使Scope为 Bucket:Key 的形式也是insert only
	DetectMime          uint8  `json:"detectMime,omitempty"` // 若非0, 则服务端根据内容自动确定 MimeType
	FsizeMin            int64  `json:"fsizeMin,omitempty"`
	FsizeLimit          int64  `json:"fsizeLimit,omitempty"`
	MimeLimit           string `json:"mimeLimit,omitempty"`
	ForceSaveKey        bool   `json:"forceSaveKey,omitempty"`
	SaveKey             string `json:"saveKey,omitempty"`
	CallbackFetchKey    uint8  `json:"callbackFetchKey,omitempty"`
	CallbackURL         string `json:"callbackUrl,omitempty"`
	CallbackHost        string `json:"callbackHost,omitempty"`
	CallbackBody        string `json:"callbackBody,omitempty"`
	CallbackBodyType    string `json:"callbackBodyType,omitempty"`
	ReturnURL           string `json:"returnUrl,omitempty"`
	ReturnBody          string `json:"returnBody,omitempty"`
	PersistentOps       string `json:"persistentOps,omitempty"`
	PersistentNotifyURL string `json:"persistentNotifyUrl,omitempty"`
	PersistentPipeline  string `json:"persistentPipeline,omitempty"`
	EndUser             string `json:"endUser,omitempty"`
	DeleteAfterDays     int    `json:"deleteAfterDays,omitempty"`
	FileType            int    `json:"fileType,omitempty"`
	// contains filtered or unexported fields
}

PutPolicy 表示文件上传的上传策略,参考 https://developer.qiniu.com/kodo/manual/1206/put-policy

func (*PutPolicy) UploadToken

func (p *PutPolicy) UploadToken(cred *auth.Credentials) (token string)

UploadToken 方法用来进行上传凭证的生成 该方法生成的过期时间是现对于现在的时间

type PutRet

type PutRet struct {
	Hash         string `json:"hash"`
	PersistentID string `json:"persistentId"`
	Key          string `json:"key"`
}

PutRet 为七牛标准的上传回复内容。 如果使用了上传回调或者自定义了returnBody,那么需要根据实际情况,自己自定义一个返回值结构体

type Recorder

type Recorder interface {
	// 新建或更新文件分片上传的进度
	Set(key string, data []byte) error

	// 获取文件分片上传的进度信息
	Get(key string) ([]byte, error)

	// 删除文件分片上传的进度文件
	Delete(key string) error

	// 根据给定的文件信息生成持久化纪录的 key
	GenerateRecorderKey(keyInfos []string, sourceFileInfo os.FileInfo) string
}

type ReferAntiLeechConfig

type ReferAntiLeechConfig struct {
	// 防盗链模式, 0 - 关闭Refer防盗链, 1 - 开启Referer白名单,2 - 开启Referer黑名单
	Mode int

	// 是否允许空的referer访问
	AllowEmptyReferer bool

	// Pattern 匹配HTTP Referer头, 当模式是1或者2的时候有效
	// Mode为1的时候表示允许Referer符合该Pattern的HTTP请求访问
	// Mode为2的时候表示禁止Referer符合该Pattern的HTTP请求访问
	// 当前允许的匹配字符串格式分为三种:
	// 一种为空主机头域名, 比如 foo.com; 一种是泛域名, 比如 *.bar.com;
	// 一种是完全通配符, 即一个 *;
	// 多个规则之间用;隔开, 比如: foo.com;*.bar.com;sub.foo.com;*.sub.bar.com
	Pattern string

	// 是否开启源站的防盗链, 默认为0, 只开启CDN防盗链, 当设置为1的时候
	// 在源站支持的情况下开启源站的Referer防盗链
	EnableSource bool
}

ReferAntiLeechConfig 是用户存储空间的Refer防盗链配置

func (*ReferAntiLeechConfig) AddDomainPattern

func (r *ReferAntiLeechConfig) AddDomainPattern(pattern string) *ReferAntiLeechConfig

AddDomainPattern 添加pattern到Pattern字段 假入Pattern值为"*.qiniu.com", 使用AddDomainPattern("*.baidu.com")后 r.Pattern的值为"*.qiniu.com;*.baidu.com"

func (*ReferAntiLeechConfig) AsQueryString

func (r *ReferAntiLeechConfig) AsQueryString() string

AsQueryString 编码成query参数格式

func (*ReferAntiLeechConfig) SetEmptyReferer

func (r *ReferAntiLeechConfig) SetEmptyReferer(enable bool) *ReferAntiLeechConfig

SetEmptyReferer 设置是否允许空Referer访问

func (*ReferAntiLeechConfig) SetEnableSource

func (r *ReferAntiLeechConfig) SetEnableSource(enable bool) *ReferAntiLeechConfig

SetEnableSource 设置是否开启源站的防盗链

func (*ReferAntiLeechConfig) SetMode

func (r *ReferAntiLeechConfig) SetMode(mode int) *ReferAntiLeechConfig

SetMode 设置referer防盗链模式

func (*ReferAntiLeechConfig) SetPattern

func (r *ReferAntiLeechConfig) SetPattern(pattern string) *ReferAntiLeechConfig

SetPattern 设置匹配Referer的模式

type Region

type Region struct {
	// 上传入口
	SrcUpHosts []string `json:"src_up,omitempty"`

	// 加速上传入口
	CdnUpHosts []string `json:"cdn_up,omitempty"`

	// 获取文件信息入口
	RsHost string `json:"rs,omitempty"`

	// bucket列举入口
	RsfHost string `json:"rsf,omitempty"`

	ApiHost string `json:"api,omitempty"`

	// 存储io 入口
	IovipHost string `json:"io,omitempty"`
}

存储所在的地区,例如华东,华南,华北 每个存储区域可能有多个机房信息,每个机房可能有多个上传入口

func GetRegion

func GetRegion(ak, bucket string) (*Region, error)

GetRegion 用来根据ak和bucket来获取空间相关的机房信息

func GetRegionByID

func GetRegionByID(regionID RegionID) (Region, bool)

GetDefaultReion 根据RegionID获取对应的Region信息

func (*Region) GetApiHost

func (r *Region) GetApiHost(useHttps bool) string

获取api host

func (*Region) GetIoHost

func (r *Region) GetIoHost(useHttps bool) string

获取io host

func (*Region) GetRsHost

func (r *Region) GetRsHost(useHttps bool) string

获取RsHost

func (*Region) GetRsfHost

func (r *Region) GetRsfHost(useHttps bool) string

获取rsfHost

func (*Region) String

func (r *Region) String() string

type RegionID

type RegionID string

type RegionInfo

type RegionInfo struct {
	ID          string `json:"id"`
	Description string `json:"description"`
}

func GetRegionsInfo

func GetRegionsInfo(mac *auth.Credentials) ([]RegionInfo, error)

type ResumeUploader

type ResumeUploader struct {
	Client *client.Client
	Cfg    *Config
}

ResumeUploader 表示一个分片上传的对象

func NewResumeUploader

func NewResumeUploader(cfg *Config) *ResumeUploader

NewResumeUploader 表示构建一个新的分片上传的对象

func NewResumeUploaderEx

func NewResumeUploaderEx(cfg *Config, clt *client.Client) *ResumeUploader

NewResumeUploaderEx 表示构建一个新的分片上传的对象

func (*ResumeUploader) Bput

func (p *ResumeUploader) Bput(ctx context.Context, upToken string, ret *BlkputRet, body io.Reader, size int) error

发送bput请求

func (*ResumeUploader) Mkblk

func (p *ResumeUploader) Mkblk(ctx context.Context, upToken string, upHost string, ret *BlkputRet, blockSize int, body io.Reader, size int) error

创建块请求

func (*ResumeUploader) Mkfile

func (p *ResumeUploader) Mkfile(ctx context.Context, upToken string, upHost string, ret interface{}, key string, hasKey bool, fsize int64, extra *RputExtra) (err error)

创建文件请求

func (*ResumeUploader) Put

func (p *ResumeUploader) Put(ctx context.Context, ret interface{}, upToken string, key string, f io.ReaderAt, fsize int64, extra *RputExtra) error

Put 方法用来上传一个文件,支持断点续传和分块上传。

ctx 是请求的上下文。 ret 是上传成功后返回的数据。如果 upToken 中没有设置 CallbackUrl 或 ReturnBody,那么返回的数据结构是 PutRet 结构。 upToken 是由业务服务器颁发的上传凭证。 key 是要上传的文件访问路径。比如:"foo/bar.jpg"。注意我们建议 key 不要以 '/' 开头。另外,key 为空字符串是合法的。 f 是文件内容的访问接口。考虑到需要支持分块上传和断点续传,要的是 io.ReaderAt 接口,而不是 io.Reader。 fsize 是要上传的文件大小。 extra 是上传的一些可选项。详细见 RputExtra 结构的描述。

func (*ResumeUploader) PutFile

func (p *ResumeUploader) PutFile(ctx context.Context, ret interface{}, upToken, key, localFile string, extra *RputExtra) error

PutFile 用来上传一个文件,支持断点续传和分块上传。 和 Put 不同的只是一个通过提供文件路径来访问文件内容,一个通过 io.ReaderAt 来访问。

ctx 是请求的上下文。 ret 是上传成功后返回的数据。如果 upToken 中没有设置 CallbackUrl 或 ReturnBody,那么返回的数据结构是 PutRet 结构。 upToken 是由业务服务器颁发的上传凭证。 key 是要上传的文件访问路径。比如:"foo/bar.jpg"。注意我们建议 key 不要以 '/' 开头。另外,key 为空字符串是合法的。 localFile 是要上传的文件的本地路径。 extra 是上传的一些可选项。详细见 RputExtra 结构的描述。

func (*ResumeUploader) PutFileWithoutKey

func (p *ResumeUploader) PutFileWithoutKey(ctx context.Context, ret interface{}, upToken, localFile string, extra *RputExtra) error

PutFileWithoutKey 上传一个文件,支持断点续传和分块上传。文件命名方式首先看看 upToken 中是否设置了 saveKey,如果设置了 saveKey,那么按 saveKey 要求的规则生成 key,否则自动以文件的 hash 做 key。 和 PutWithoutKey 不同的只是一个通过提供文件路径来访问文件内容,一个通过 io.ReaderAt 来访问。

ctx 是请求的上下文。 ret 是上传成功后返回的数据。如果 upToken 中没有设置 CallbackUrl 或 ReturnBody,那么返回的数据结构是 PutRet 结构。 upToken 是由业务服务器颁发的上传凭证。 localFile 是要上传的文件的本地路径。 extra 是上传的一些可选项。详细见 RputExtra 结构的描述。

func (*ResumeUploader) PutWithoutKey

func (p *ResumeUploader) PutWithoutKey(ctx context.Context, ret interface{}, upToken string, f io.ReaderAt, fsize int64, extra *RputExtra) error

PutWithoutKey 方法用来上传一个文件,支持断点续传和分块上传。文件命名方式首先看看 upToken 中是否设置了 saveKey,如果设置了 saveKey,那么按 saveKey 要求的规则生成 key,否则自动以文件的 hash 做 key。

ctx 是请求的上下文。 ret 是上传成功后返回的数据。如果 upToken 中没有设置 CallbackUrl 或 ReturnBody,那么返回的数据结构是 PutRet 结构。 upToken 是由业务服务器颁发的上传凭证。 f 是文件内容的访问接口。考虑到需要支持分块上传和断点续传,要的是 io.ReaderAt 接口,而不是 io.Reader。 fsize 是要上传的文件大小。 extra 是上传的一些可选项。详细见 RputExtra 结构的描述。

func (*ResumeUploader) PutWithoutSize

func (p *ResumeUploader) PutWithoutSize(ctx context.Context, ret interface{}, upToken, key string, r io.Reader, extra *RputExtra) error

func (*ResumeUploader) UpHost

func (p *ResumeUploader) UpHost(ak, bucket string) (upHost string, err error)

type ResumeUploaderV2

type ResumeUploaderV2 struct {
	Client *client.Client
	Cfg    *Config
}

ResumeUploaderV2 表示一个分片上传 v2 的对象

func NewResumeUploaderV2

func NewResumeUploaderV2(cfg *Config) *ResumeUploaderV2

NewResumeUploaderV2 表示构建一个新的分片上传的对象

func NewResumeUploaderV2Ex

func NewResumeUploaderV2Ex(cfg *Config, clt *client.Client) *ResumeUploaderV2

NewResumeUploaderV2Ex 表示构建一个新的分片上传 v2 的对象

func (*ResumeUploaderV2) CompleteParts

func (p *ResumeUploaderV2) CompleteParts(ctx context.Context, upToken, upHost string, ret interface{}, bucket, key string, hasKey bool, uploadId string, extra *RputV2Extra) (err error)

完成块请求

func (*ResumeUploaderV2) InitParts

func (p *ResumeUploaderV2) InitParts(ctx context.Context, upToken, upHost, bucket, key string, hasKey bool, ret *InitPartsRet) error

初始化块请求

func (*ResumeUploaderV2) Put

func (p *ResumeUploaderV2) Put(ctx context.Context, ret interface{}, upToken string, key string, f io.ReaderAt, fsize int64, extra *RputV2Extra) error

Put 方法用来上传一个文件,支持断点续传和分块上传。

ctx 是请求的上下文。 ret 是上传成功后返回的数据。如果 upToken 中没有设置 CallbackUrl 或 ReturnBody,那么返回的数据结构是 PutRet 结构。 upToken 是由业务服务器颁发的上传凭证。 key 是要上传的文件访问路径。比如:"foo/bar.jpg"。注意我们建议 key 不要以 '/' 开头。另外,key 为空字符串是合法的。 f 是文件内容的访问接口。考虑到需要支持分块上传和断点续传,要的是 io.ReaderAt 接口,而不是 io.Reader。 fsize 是要上传的文件大小。 extra 是上传的一些可选项。详细见 RputV2Extra 结构的描述。

func (*ResumeUploaderV2) PutFile

func (p *ResumeUploaderV2) PutFile(ctx context.Context, ret interface{}, upToken, key, localFile string, extra *RputV2Extra) error

PutFile 用来上传一个文件,支持断点续传和分块上传。 和 Put 不同的只是一个通过提供文件路径来访问文件内容,一个通过 io.ReaderAt 来访问。

ctx 是请求的上下文。 ret 是上传成功后返回的数据。如果 upToken 中没有设置 CallbackUrl 或 ReturnBody,那么返回的数据结构是 PutRet 结构。 upToken 是由业务服务器颁发的上传凭证。 key 是要上传的文件访问路径。比如:"foo/bar.jpg"。注意我们建议 key 不要以 '/' 开头。另外,key 为空字符串是合法的。 localFile 是要上传的文件的本地路径。 extra 是上传的一些可选项。详细见 RputV2Extra 结构的描述。

func (*ResumeUploaderV2) PutFileWithoutKey

func (p *ResumeUploaderV2) PutFileWithoutKey(ctx context.Context, ret interface{}, upToken, localFile string, extra *RputV2Extra) error

PutFileWithoutKey 上传一个文件,支持断点续传和分块上传。文件命名方式首先看看 upToken 中是否设置了 saveKey,如果设置了 saveKey,那么按 saveKey 要求的规则生成 key,否则自动以文件的 hash 做 key。 和 PutWithoutKey 不同的只是一个通过提供文件路径来访问文件内容,一个通过 io.ReaderAt 来访问。

ctx 是请求的上下文。 ret 是上传成功后返回的数据。如果 upToken 中没有设置 CallbackUrl 或 ReturnBody,那么返回的数据结构是 PutRet 结构。 upToken 是由业务服务器颁发的上传凭证。 localFile 是要上传的文件的本地路径。 extra 是上传的一些可选项。详细见 RputV2Extra 结构的描述。

func (*ResumeUploaderV2) PutWithoutKey

func (p *ResumeUploaderV2) PutWithoutKey(ctx context.Context, ret interface{}, upToken string, f io.ReaderAt, fsize int64, extra *RputV2Extra) error

PutWithoutKey 方法用来上传一个文件,支持断点续传和分块上传。文件命名方式首先看看 upToken 中是否设置了 saveKey,如果设置了 saveKey,那么按 saveKey 要求的规则生成 key,否则自动以文件的 hash 做 key。

ctx 是请求的上下文。 ret 是上传成功后返回的数据。如果 upToken 中没有设置 CallbackUrl 或 ReturnBody,那么返回的数据结构是 PutRet 结构。 upToken 是由业务服务器颁发的上传凭证。 f 是文件内容的访问接口。考虑到需要支持分块上传和断点续传,要的是 io.ReaderAt 接口,而不是 io.Reader。 fsize 是要上传的文件大小。 extra 是上传的一些可选项。详细见 RputV2Extra 结构的描述。

func (*ResumeUploaderV2) PutWithoutSize

func (p *ResumeUploaderV2) PutWithoutSize(ctx context.Context, ret interface{}, upToken, key string, r io.Reader, extra *RputV2Extra) error

func (*ResumeUploaderV2) UpHost

func (p *ResumeUploaderV2) UpHost(ak, bucket string) (upHost string, err error)

func (*ResumeUploaderV2) UploadParts

func (p *ResumeUploaderV2) UploadParts(ctx context.Context, upToken, upHost, bucket, key string, hasKey bool, uploadId string, partNumber int64, partMD5 string, ret *UploadPartsRet, body io.Reader, size int) error

发送块请求

type RputExtra

type RputExtra struct {
	Recorder   Recorder          // 可选。上传进度记录
	Params     map[string]string // 可选。用户自定义参数,以"x:"开头,而且值不能为空,否则忽略
	UpHost     string
	MimeType   string                                        // 可选。
	ChunkSize  int                                           // 可选。每次上传的Chunk大小
	TryTimes   int                                           // 可选。尝试次数
	Progresses []BlkputRet                                   // 可选。上传进度
	Notify     func(blkIdx int, blkSize int, ret *BlkputRet) // 可选。进度提示(注意多个block是并行传输的)
	NotifyErr  func(blkIdx int, blkSize int, err error)
}

RputExtra 表示分片上传额外可以指定的参数

type RputV2Extra

type RputV2Extra struct {
	Recorder   Recorder          // 可选。上传进度记录
	Metadata   map[string]string // 可选。用户自定义文件 metadata 信息
	CustomVars map[string]string // 可选。用户自定义参数,以"x:"开头,而且值不能为空,否则忽略
	UpHost     string
	MimeType   string // 可选。
	PartSize   int64  // 可选。每次上传的块大小
	TryTimes   int    // 可选。尝试次数

	Notify    func(partNumber int64, ret *UploadPartsRet) // 可选。进度提示(注意多个block是并行传输的)
	NotifyErr func(partNumber int64, err error)
	// contains filtered or unexported fields
}

RputV2Extra 表示分片上传 v2 额外可以指定的参数

type Settings

type Settings struct {
	TaskQsize int   // 可选。任务队列大小。为 0 表示取 Workers * 4。
	Workers   int   // 并行 Goroutine 数目。
	ChunkSize int   // 默认的Chunk大小,不设定则为4M(仅在分片上传 v1 中使用)
	PartSize  int64 // 默认的Part大小,不设定则为4M(仅在分片上传 v2 中使用)
	TryTimes  int   // 默认的尝试次数,不设定则为3
}

Settings 为分片上传设置

type UcQueryRet

type UcQueryRet struct {
	TTL int                            `json:"ttl"`
	Io  map[string]map[string][]string `json:"io"`
	Up  map[string]UcQueryUp           `json:"up"`
}

UcQueryRet 为查询请求的回复

type UcQueryUp

type UcQueryUp struct {
	Main   []string `json:"main,omitempty"`
	Backup []string `json:"backup,omitempty"`
	Info   string   `json:"info,omitempty"`
}

UcQueryUp 为查询请求回复中的上传域名信息

type UploadPartsRet

type UploadPartsRet struct {
	Etag string `json:"etag"`
	MD5  string `json:"md5"`
}

UploadPartsRet 表示分片上传 v2 每个片上传完毕的返回值

type Zone

type Zone = Region

Zone 是Region的别名 兼容保留

func GetZone

func GetZone(ak, bucket string) (zone *Zone, err error)

GetZone 用来根据ak和bucket来获取空间相关的机房信息 新版本使用GetRegion, 这个函数用来保持兼容

Jump to

Keyboard shortcuts

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