storage

package
v7.20.1 Latest Latest
Warning

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

Go to latest
Published: Apr 26, 2024 License: MIT Imports: 39 Imported by: 210

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

上传进度过期错误

Variables

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

	// ErrNoSuchFile 文件已经存在
	//lint:ignore ST1005 历史问题,需要兼容
	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)

	// 华东浙江 2 区
	ZoneHuadongZheJiang2, _ = GetRegionByID(RIDHuadongZheJiang2)

	// 兼容保留
	Zone_z0 = ZoneHuadong
	// 兼容保留
	Zone_z1 = ZoneHuabei
	// 兼容保留
	Zone_z2 = ZoneHuanan
	// 兼容保留
	Zone_na0 = ZoneBeimei
	// 兼容保留
	Zone_as0 = ZoneXinjiapo
)
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 UcHost = ""

UcHost 为查询空间相关域名的 API 服务地址 设置 UcHost 时,如果不指定 scheme 默认会使用 https Deprecated 使用 SetUcHosts 替换

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 用来生成私有空间资源下载链接,注意该方法并不会对 key 进行 escape

func MakePrivateURLv2 added in v7.9.5

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

MakePrivateURLv2 用来生成私有空间资源下载链接,并且该方法确保 key 将会被 escape

func MakePrivateURLv2WithQuery added in v7.9.5

func MakePrivateURLv2WithQuery(mac *auth.Credentials, domain, key string, query url.Values, deadline int64) (privateURL string)

MakePrivateURLv2WithQuery 用来生成私有空间资源下载链接,并且该方法确保 key 将会被 escape,并在 URL 后追加经过编码的查询参数

func MakePrivateURLv2WithQueryString added in v7.9.5

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

MakePrivateURLv2WithQueryString 用来生成私有空间资源下载链接,并且该方法确保 key 将会被 escape,并在 URL 后直接追加查询参数

func MakePublicURL

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

MakePublicURL 用来生成公开空间资源下载链接,注意该方法并不会对 key 进行 escape

func MakePublicURLv2 added in v7.9.5

func MakePublicURLv2(domain, key string) string

MakePublicURLv2 用来生成公开空间资源下载链接,并且该方法确保 key 将会被 escape

func MakePublicURLv2WithQuery added in v7.9.5

func MakePublicURLv2WithQuery(domain, key string, query url.Values) string

MakePublicURLv2WithQuery 用来生成公开空间资源下载链接,并且该方法确保 key 将会被 escape,并在 URL 后追加经过编码的查询参数

func MakePublicURLv2WithQueryString added in v7.18.0

func MakePublicURLv2WithQueryString(domain, key, query string) string

MakePublicURLv2WithQueryString 用来生成公开空间资源下载链接,并且该方法确保 key 将会被 escape,并在 URL 后直接追加查询参数

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 SetUcHost added in v7.9.6

func SetUcHost(host string, useHttps bool)

SetUcHost Deprecated 使用 SetUcHosts 替换

func SetUcHosts added in v7.17.0

func SetUcHosts(hosts ...string)

SetUcHosts 配置多个 UC 域名

func URIChangeMeta added in v7.18.0

func URIChangeMeta(bucket, key string, changeMetas map[string]string) string

URIChangeMeta

@Description: 构建 chgm 接口的请求命令,修改 meta
@param bucket 空间
@param key 文件保存的 key
@param metas 需要修改的 metas,只包含需要更改的 metas,可增加
			 服务接口中 key 必须包含 x-qn-meta- 前缀,SDK 会对 metas 中的 key 进行检测
			 - key 如果包含了 x-qn-meta- 前缀,则直接使用 key
			 - key 如果不包含了 x-qn-meta- 前缀,则内部会为 key 拼接 x-qn-meta- 前缀
@return string URI

func URIChangeMime

func URIChangeMime(bucket, key, newMime string) string

URIChangeMime 构建 chgm 接口的请求命令

func URIChangeMimeAndMeta added in v7.18.0

func URIChangeMimeAndMeta(bucket, key, newMime string, metas map[string]string) string

URIChangeMimeAndMeta

@Description: 构建 chgm 接口的请求命令
@param bucket 空间
@param key 文件保存的 key
@param newMime 新的 mime
@param metas 需要修改的 metas,只包含需要更改的 metas,可增加
			 服务接口中 key 必须包含 x-qn-meta- 前缀,SDK 会对 metas 中的 key 进行检测
			 - key 如果包含了 x-qn-meta- 前缀,则直接使用 key
			 - key 如果不包含了 x-qn-meta- 前缀,则内部会为 key 拼接 x-qn-meta- 前缀
@return string URI

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

	TryTimes int // 可选。尝试次数

	// 主备域名冻结时间(默认:600s),当一个域名请求失败(单个域名会被重试 TryTimes 次),会被冻结一段时间,使用备用域名进行重试,在冻结时间内,域名不能被使用,当一个操作中所有域名竣备冻结操作不在进行重试,返回最后一次操作的错误。
	HostFreezeDuration time.Duration
}

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 {
		// 资源内容的大小,单位:字节。
		Fsize int64 `json:"fsize"`

		// 文件的HASH值,使用hash值算法计算。
		Hash string `json:"hash"`

		// 资源的 MIME 类型。
		MimeType string `json:"mimeType"`

		/**
		 * 资源的存储类型
		 * 0 表示标准存储
		 * 1 表示低频存储
		 * 2 表示归档存储
		 * 3 表示深度归档存储
		 * 4 表示归档直读存储
		 */
		Type int `json:"type"`

		// 上传时间,单位:100纳秒,其值去掉低七位即为Unix时间戳。
		PutTime int64 `json:"putTime"`

		/**
		 * 归档/深度归档存储文件的解冻状态,归档/深度归档文件冻结时,不返回该字段。
		 * 1 表示解冻中
		 * 2 表示解冻完成
		 */
		RestoreStatus *int `json:"restoreStatus"`

		/**
		 * 文件的存储状态,即禁用状态和启用状态间的的互相转换,请参考:文件状态。
		 * 0 表示启用
		 * 1 表示禁用
		 */
		Status *int `json:"status"`

		/**
		 * 文件的 md5 值
		 */
		Md5 string `json:"md5"`

		/**
		 * 文件上传时设置的endUser
		 */
		EndUser string `json:"endUser"`

		/**
		 * 文件过期删除日期,Unix 时间戳格式,具体文件过期日期计算参考 生命周期管理。
		 * 文件在设置过期时间后才会返回该字段(通过生命周期规则设置文件过期时间,仅对该功能发布后满足规则条件新上传文件返回该字段;
		 * 历史文件想要返回该字段需要在功能发布后可通过 修改文件过期删除时间 API 或者 修改文件生命周期 API 指定过期时间;对于已
		 * 经设置过过期时间的历史文件,到期都会正常过期删除,只是服务端没有该字段返回)
		 *
		 * 例如:值为1568736000的时间,表示文件会在2019/9/18当天内删除。
		 */
		Expiration *int64 `json:"expiration"`

		/**
		 * 文件生命周期中转为低频存储的日期,Unix 时间戳格式 ,具体日期计算参考 生命周期管理。
		 * 文件在设置转低频后才会返回该字段(通过生命周期规则设置文件转低频,仅对该功能发布后满足规则条件新上传文件返回该字段;
		 * 历史文件想要返回该字段需要在功能发布后可通过 修改文件生命周期 API 指定转低频时间;对于已经设置过转低频时间的历史文
		 * 件,到期都会正常执行,只是服务端没有该字段返回)
		 *
		 * 例如:值为1568736000的时间,表示文件会在2019/9/18当天转为低频存储类型。
		 */
		TransitionToIA *int64 `json:"transitionToIA"`

		/**
		 * 文件生命周期中转为归档直读存储的日期,int64 类型,Unix 时间戳格式 ,具体日期计算参考 生命周期管理。
		 * 文件在设置转归档直读后才会返回该字段(通过生命周期规则设置文件转归档直读,仅对该功能发布后满足规则条件新上传文件返回该字段;
		 * 历史文件想要返回该字段需要在功能发布后可通过 修改文件生命周期 API 指定转归档直读时间;对于已经设置过转归档直读时间的历史文
		 * 件,到期都会正常执行,只是服务端没有该字段返回)
		 *
		 * 例如:值为1568736000的时间,表示文件会在2019/9/18当天转为归档直读存储类型。
		 */
		TransitionToArchiveIR int64 `json:"transitionToArchiveIR"`

		/**
		 * 文件生命周期中转为归档存储的日期,Unix 时间戳格式 ,具体日期计算参考 生命周期管理。
		 * 文件在设置转归档后才会返回该字段(通过生命周期规则设置文件转归档,仅对该功能发布后满足规则条件新上传文件返回该字段;
		 * 历史文件想要返回该字段需要在功能发布后可通过 修改文件生命周期 API 指定转归档时间;对于已经设置过转归档时间的历史文
		 * 件,到期都会正常执行,只是服务端没有该字段返回)
		 *
		 * 例如:值为1568736000的时间,表示文件会在2019/9/18当天转为归档存储类型。
		 */
		TransitionToArchive *int64 `json:"transitionToARCHIVE"`

		/**
		 * 文件生命周期中转为深度归档存储的日期,Unix 时间戳格式 ,具体日期计算参考 生命周期管理。
		 * 文件在设置转深度归档后才会返回该字段(通过生命周期规则设置文件转深度归档,仅对该功能发布后满足规则条件新上传文件返回该字段;
		 * 历史文件想要返回该字段需要在功能发布后可通过 修改文件生命周期 API 指定转深度归档时间;对于已经设置过转深度归档时间的历史文
		 * 件,到期都会正常执行,只是服务端没有该字段返回)
		 *
		 * 例如:值为1568736000的时间,表示文件会在2019/9/18当天转为深度归档存储类型。
		 */
		TransitionToDeepArchive *int64 `json:"transitionToDeepArchive"`

		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

	// 空间备注信息
	Remark string

	// 空间创建时间
	Ctime time.Time
}

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 表示多少天后转低频存储
	ToLineAfterDays int `json:"to_line_after_days"`

	// 指定文件上传多少天后转归档直读存储。
	// 0 表示不转归档直读存储,
	// > 0 表示多少天后转归档直读存储
	ToArchiveIRAfterDays int `json:"to_archive_ir_after_days"`

	// 指定文件上传多少天后转归档存储。
	// 0 表示不转归档存储,
	// > 0 表示多少天后转归档存储
	ToArchiveAfterDays int `json:"to_archive_after_days"`

	// 指定文件上传多少天后转深度归档存储。
	// 0 表示不转深度归档存储
	// > 0 表示多少天后转深度归档存储
	ToDeepArchiveAfterDays int `json:"to_deep_archive_after_days"`
}

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

type BucketManager

type BucketManager struct {
	Client *clientv1.Client
	Mac    *auth.Credentials
	Cfg    *Config
	// contains filtered or unexported fields
}

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

func NewBucketManager

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

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

func NewBucketManagerEx

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

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

func NewBucketManagerExWithOptions added in v7.17.0

func NewBucketManagerExWithOptions(mac *auth.Credentials, cfg *Config, clt *clientv1.Client, options BucketManagerOptions) *BucketManager

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) error

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

func (*BucketManager) AddCorsRules

func (m *BucketManager) AddCorsRules(bucket string, corsRules []CorsRule) 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, error)

Batch 接口提供了资源管理的批量操作,支持 stat,copy,move,delete,chgm,chtype,deleteAfterDays几个接口 没有 bucket 参数,会从 operations 中解析出 bucket @param operations 操作对象列表,操作对象所属的 bucket 可能会不同,但是必须属于同一个区域

func (*BucketManager) BatchWithContext added in v7.15.0

func (m *BucketManager) BatchWithContext(ctx context.Context, bucket string, operations []string) ([]BatchOpRet, error)

BatchWithContext 接口提供了资源管理的批量操作,支持 stat,copy,move,delete,chgm,chtype,deleteAfterDays几个接口 @param ctx context.Context @param bucket operations 列表中任意一个操作对象所属的 bucket @param operations 操作对象列表,操作对象所属的 bucket 可能会不同,但是必须属于同一个区域

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) ([]string, error)

Buckets 用来获取空间列表,如果指定了 shared 参数则额外包含仅被授予了读权限的空间,否则额外包含被授予了读写权限的授权空间

func (*BucketManager) BucketsV4 added in v7.16.0

func (m *BucketManager) BucketsV4(input *BucketV4Input) (output BucketsV4Output, err error)

BucketsV4 获取该用户的指定区域内的空间信息,注意该 API 以分页形式返回 Bucket 列表

func (*BucketManager) ChangeMeta added in v7.18.0

func (m *BucketManager) ChangeMeta(bucket, key string, metas map[string]string) (err error)

ChangeMeta

@Description: 用来修改或者增加 metas,metas 只包含需要修改的,未涉及的保存不变
@receiver m BucketManager
@param bucket 对象所属空间
@param key 对象保存的 key
@param newMime 新的 Mime
@param metas 需要修改的 metas,只包含需要更改的 metas,可增加;
			 服务接口中 key 必须包含 x-qn-meta- 前缀,SDK 会对 metas 参数中的 key 进行检测;
			 - key 如果包含了 x-qn-meta- 前缀,则直接使用 key;
			 - key 如果不包含了 x-qn-meta- 前缀,则内部会为 key 拼接 x-qn-meta- 前缀。
@return err 错误信息

func (*BucketManager) ChangeMime

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

ChangeMime 用来更新文件的MimeType

func (*BucketManager) ChangeMimeAndMeta added in v7.18.0

func (m *BucketManager) ChangeMimeAndMeta(bucket, key, newMime string, metas map[string]string) error

ChangeMimeAndMeta

@Description: 用用来更新文件的 MimeType 以及修改或者增加 metas,metas 只包含需要修改的
@receiver m BucketManager
@param bucket 对象所属空间
@param key 对象保存的 key
@param newMime 新的 Mime
@param metas 需要修改的 metas,只包含需要更改的 metas,可增加;
			 服务接口中 key 必须包含 x-qn-meta- 前缀,SDK 会对 metas 参数中的 key 进行检测;
			 - key 如果包含了 x-qn-meta- 前缀,则直接使用 key;
			 - key 如果不包含了 x-qn-meta- 前缀,则内部会为 key 拼接 x-qn-meta- 前缀。
@return err 错误信息

func (*BucketManager) ChangeType

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

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

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) 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) error

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

func (*BucketManager) Delete

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

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

func (*BucketManager) DeleteAfterDays

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

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

func (*BucketManager) DropBucket

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

DropBucket 删除七牛存储空间

func (*BucketManager) Fetch

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

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

func (*BucketManager) FetchWithoutKey

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

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

func (*BucketManager) Get added in v7.18.0

func (m *BucketManager) Get(bucket, key string, options *GetObjectInput) (*GetObjectOutput, error)

Get

@Description: 下载文件
@receiver m BucketManager
@param bucket 文件所在 bucket
@param key 文件的 key
@param options 下载可选配置
@return *GetObjectOutput 响应,注:GetObjectOutput 和 error 可能同时存在,有 GetObjectOutput 时请尝试 close
@return error 请求错误信息

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) ([]BucketLifeCycleRule, 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) ([]CorsRule, error)

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

func (*BucketManager) GetTagging

func (m *BucketManager) GetTagging(bucket string) (map[string]string, 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,流式返回每条数据。 Deprecated

func (*BucketManager) ListBucketContext

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

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

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) ListFilesWithContext added in v7.15.0

func (m *BucketManager) ListFilesWithContext(ctx context.Context, bucket string, options ...ListInputOption) (ret *ListFilesRet, hasNext bool, err error)

ListFilesWithContext

 @Description: 用来获取空间文件列表,可以根据需要指定文件的列举条件
 @receiver m BucketManager
 @param ctx context
 @param bucket 列举的 bucket
 @param options 列举的可选条件
				列举条件-需要列举 Key 的前缀:ListInputOptionsPrefix(prefix)
				列举条件-文件的目录分隔符:ListInputOptionsDelimiter(delimiter)
				列举条件-下次列举的位置:ListInputOptionsMarker(marker)
				列举条件-每次返回的文件的最大数量:ListInputOptionsLimit(limit) 范围:1~1000
 @return ret 列举的对象数据
 @return hasNext 是否还有数据未被列举
 @return err 列举时的错误信息

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) error

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

func (*BucketManager) Prefetch

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

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

func (*BucketManager) RestoreAr

func (m *BucketManager) RestoreAr(bucket, key string, freezeAfterDays int) 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) 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) SetRemark added in v7.16.0

func (m *BucketManager) SetRemark(bucketName, remark string) error

SetRemark 设置空间备注信息

func (*BucketManager) SetTagging

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

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

func (*BucketManager) Stat

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

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

func (*BucketManager) StatWithOpts added in v7.10.0

func (m *BucketManager) StatWithOpts(bucket, key string, opt *StatOpts) (FileInfo, error)

StatWithParts 用来获取一个文件的基本信息以及分片信息

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) 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 BucketManagerOptions added in v7.17.0

type BucketManagerOptions struct {
	RetryMax int // 单域名重试次数,当前只有 uc 相关的服务有多域名
	// 主备域名冻结时间(默认:600s),当一个域名请求失败(单个域名会被重试 TryTimes 次),会被冻结一段时间,使用备用域名进行重试,在冻结时间内,域名不能被使用,当一个操作中所有域名竣备冻结操作不在进行重试,返回最后一次操作的错误。
	HostFreezeDuration time.Duration
}

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 BucketV4Input added in v7.16.0

type BucketV4Input struct {
	// 指定区域 ID,如果传入空字符串,则查询所有区域
	Region string
	// 最多获取的空间数,如果传入 0,则查询 20 个空间
	Limit uint64
	// 获取下一页的标记
	Marker string
}

BucketV4 查询条件

type BucketV4Output added in v7.16.0

type BucketV4Output struct {
	// 空间名称
	Name string `json:"name"`
	// 空间区域 ID
	Region string `json:"region"`
	// 空间是否私有
	Private bool `json:"private"`
	// 空间创建时间
	Ctime time.Time `json:"ctime"`
}

BucketV4 返回的空间信息

type BucketsV4Output added in v7.16.0

type BucketsV4Output struct {
	// 下页开始的 Marker
	NextMarker string `json:"next_marker"`
	// 列举是否被阶段,如果为 true,则表示还有下一页
	IsTruncated bool `json:"is_truncated"`
	// 空间列表
	Buckets []BucketV4Output `json:"buckets"`
}

BucketV4 返回的空间信息

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 {

	// 资源内容的大小,单位:字节。
	Fsize int64 `json:"fsize"`

	// 文件的HASH值,使用hash值算法计算。
	Hash string `json:"hash"`

	// 资源的 MIME 类型。
	MimeType string `json:"mimeType"`

	/**
	 * 资源的存储类型
	 * 0 表示标准存储
	 * 1 表示低频存储
	 * 2 表示归档存储
	 * 3 表示深度归档存储
	 * 4 表示归档存储直读
	 */
	Type int `json:"type"`

	// 上传时间,单位:100纳秒,其值去掉低七位即为Unix时间戳。
	PutTime int64 `json:"putTime"`

	/**
	 * 归档/深度归档存储文件的解冻状态,归档/深度归档文件冻结时,不返回该字段。
	 * 1 表示解冻中
	 * 2 表示解冻完成
	 */
	RestoreStatus int `json:"restoreStatus"`

	/**
	 * 文件的存储状态,即禁用状态和启用状态间的的互相转换,请参考:文件状态。
	 * 0 表示启用
	 * 1 表示禁用
	 */
	Status int `json:"status"`

	/**
	 * 文件的 md5 值
	 */
	Md5 string `json:"md5"`

	/**
	 * 文件上传时设置的endUser
	 */
	EndUser string `json:"endUser"`

	/**
	 * 自定义元数据,含 meta_key 参数 及对应 metaValue 值;仅当自定义元数据后返回该字段。
	 */
	MetaData map[string]string `json:"x-qn-meta"`

	/**
	 * 文件过期删除日期,int64 类型,Unix 时间戳格式,具体文件过期日期计算参考 生命周期管理。
	 * 文件在设置过期时间后才会返回该字段(通过生命周期规则设置文件过期时间,仅对该功能发布后满足规则条件新上传文件返回该字段;
	 * 历史文件想要返回该字段需要在功能发布后可通过 修改文件过期删除时间 API 或者 修改文件生命周期 API 指定过期时间;对于已
	 * 经设置过过期时间的历史文件,到期都会正常过期删除,只是服务端没有该字段返回)
	 *
	 * 例如:值为1568736000的时间,表示文件会在2019/9/18当天内删除。
	 */
	Expiration int64 `json:"expiration"`

	/**
	 * 文件生命周期中转为低频存储的日期,int64 类型,Unix 时间戳格式 ,具体日期计算参考 生命周期管理。
	 * 文件在设置转低频后才会返回该字段(通过生命周期规则设置文件转低频,仅对该功能发布后满足规则条件新上传文件返回该字段;
	 * 历史文件想要返回该字段需要在功能发布后可通过 修改文件生命周期 API 指定转低频时间;对于已经设置过转低频时间的历史文
	 * 件,到期都会正常执行,只是服务端没有该字段返回)
	 *
	 * 例如:值为1568736000的时间,表示文件会在2019/9/18当天转为低频存储类型。
	 */
	TransitionToIA int64 `json:"transitionToIA"`

	/**
	 * 文件生命周期中转为归档直读存储的日期,int64 类型,Unix 时间戳格式 ,具体日期计算参考 生命周期管理。
	 * 文件在设置转归档直读后才会返回该字段(通过生命周期规则设置文件转归档直读,仅对该功能发布后满足规则条件新上传文件返回该字段;
	 * 历史文件想要返回该字段需要在功能发布后可通过 修改文件生命周期 API 指定转归档直读时间;对于已经设置过转归档直读时间的历史文
	 * 件,到期都会正常执行,只是服务端没有该字段返回)
	 *
	 * 例如:值为1568736000的时间,表示文件会在2019/9/18当天转为归档直读存储类型。
	 */
	TransitionToArchiveIR int64 `json:"transitionToArchiveIR"`

	/**
	 * 文件生命周期中转为归档存储的日期,int64 类型,Unix 时间戳格式 ,具体日期计算参考 生命周期管理。
	 * 文件在设置转归档后才会返回该字段(通过生命周期规则设置文件转归档,仅对该功能发布后满足规则条件新上传文件返回该字段;
	 * 历史文件想要返回该字段需要在功能发布后可通过 修改文件生命周期 API 指定转归档时间;对于已经设置过转归档时间的历史文
	 * 件,到期都会正常执行,只是服务端没有该字段返回)
	 *
	 * 例如:值为1568736000的时间,表示文件会在2019/9/18当天转为归档存储类型。
	 */
	TransitionToArchive int64 `json:"transitionToARCHIVE"`

	/**
	 * 文件生命周期中转为深度归档存储的日期,int64 类型,Unix 时间戳格式 ,具体日期计算参考 生命周期管理。
	 * 文件在设置转深度归档后才会返回该字段(通过生命周期规则设置文件转深度归档,仅对该功能发布后满足规则条件新上传文件返回该字段;
	 * 历史文件想要返回该字段需要在功能发布后可通过 修改文件生命周期 API 指定转深度归档时间;对于已经设置过转深度归档时间的历史文
	 * 件,到期都会正常执行,只是服务端没有该字段返回)
	 *
	 * 例如:值为1568736000的时间,表示文件会在2019/9/18当天转为深度归档存储类型。
	 */
	TransitionToDeepArchive int64 `json:"transitionToDeepArchive"`

	// 分拣分片信息,可能为空
	Parts []int64 `json:"parts"`
}

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
	// contains filtered or unexported fields
}

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 GetObjectInput added in v7.18.0

type GetObjectInput struct {
	Context         context.Context // 下载所用的 Context
	DownloadDomains []string        // 下载域名列表,如果不填则使用默认源站域名,下载域名可以接受直接填写<HOST>,或是 <protocol>://<HOST> 的格式,如果设置了 protocol 则忽略 UseHttps 的设置;当前仅使用第一个域名
	PresignUrl      bool            // 下载域名是否需要签名,如果使用源站域名则总是签名
	Range           string          // 获取范围,格式同 HTTP 协议的 Range Header
	TrafficLimit    uint64          // 下载单链限速,单位:bit/s;范围:819200 - 838860800(即800Kb/s - 800Mb/s),如果超出该范围将返回 400 错误
}

type GetObjectOutput added in v7.18.0

type GetObjectOutput struct {
	ContentType   string            // 获取 MIME TYPE
	ContentLength int64             // 获取返回的数据量,如果是 -1 表示未知
	ETag          string            // 获取对象的 Etag
	Metadata      map[string]string // 获取自定义元数据
	LastModified  time.Time         // 获取对象最后一次修改时间
	Body          io.ReadCloser     // 获取对象数据
}

func (*GetObjectOutput) Close added in v7.18.0

func (g *GetObjectOutput) Close() error

func (*GetObjectOutput) Read added in v7.18.0

func (g *GetObjectOutput) Read(p []byte) (n int, err error)

type InitPartsRet

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

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

type ListFilesRet added in v7.15.0

type ListFilesRet struct {
	Marker         string     `json:"marker"`
	Items          []ListItem `json:"items"`
	CommonPrefixes []string   `json:"commonPrefixes"`
}

type ListInputOption added in v7.15.0

type ListInputOption func(options *listInputOptions)

func ListInputOptionsDelimiter added in v7.15.0

func ListInputOptionsDelimiter(delimiter string) ListInputOption

func ListInputOptionsLimit added in v7.15.0

func ListInputOptionsLimit(limit int) ListInputOption

func ListInputOptionsMarker added in v7.15.0

func ListInputOptionsMarker(marker string) ListInputOption

func ListInputOptionsNeedParts added in v7.20.1

func ListInputOptionsNeedParts(needParts bool) ListInputOption

func ListInputOptionsPrefix added in v7.15.0

func ListInputOptionsPrefix(prefix string) ListInputOption

type ListItem

type ListItem struct {

	// 资源名
	Key string `json:"key"`

	// 上传时间,单位:100纳秒,其值去掉低七位即为Unix时间戳。
	PutTime int64 `json:"putTime"`

	// 文件的HASH值,使用hash值算法计算。
	Hash string `json:"hash"`

	// 资源内容的大小,单位:字节。
	Fsize int64 `json:"fsize"`

	// 资源的 MIME 类型。
	MimeType string `json:"mimeType"`

	/**
	 * 文件上传时设置的endUser
	 */
	EndUser string `json:"endUser"`

	/**
	 * 资源的存储类型
	 * 0 表示标准存储
	 * 1 表示低频存储
	 * 2 表示归档存储
	 * 3 表示深度归档存储
	 * 4 表示归档存储直读
	 */
	Type int `json:"type"`

	/**
	 * 文件的存储状态,即禁用状态和启用状态间的的互相转换,请参考:文件状态。
	 * 0 表示启用
	 * 1 表示禁用
	 */
	Status int `json:"status"`

	/**
	 * 文件的 md5 值
	 */
	Md5 string `json:"md5"`

	/**
	 * 文件的分片信息
	 */
	Parts []uint `json:"parts"`
}

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 {
	// 可选。
	// 用户自定义参数:key 以"x:"开头,而且 value 不能为空 eg: key为x:qqq
	// 自定义 meta:key 以"x-qn-meta-"开头,而且 value 不能为空 eg: key为x-qn-meta-aaa
	Params map[string]string

	UpHost string

	TryTimes int // 可选。尝试次数

	// 主备域名冻结时间(默认:600s),当一个域名请求失败(单个域名会被重试 TryTimes 次),会被冻结一段时间,使用备用域名进行重试,在冻结时间内,域名不能被使用,当一个操作中所有域名竣备冻结操作不在进行重试,返回最后一次操作的错误。
	HostFreezeDuration time.Duration

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

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

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

type PutPolicy

type PutPolicy struct {

	// 指定上传的目标资源空间 Bucket 和资源键 Key(最大为 750 字节)。有三种格式:
	// <bucket>,表示允许用户上传文件到指定的 bucket。在这种格式下文件只能新增(分片上传 v1 版 需要指定 insertOnly 为 1 才是新增,否则也为覆盖上传),若已存在同名资源(且文件内容/etag不一致),上传会失败;若已存在资源的内容/etag一致,则上传会返回成功。
	// <bucket>:<key>,表示只允许用户上传指定 key 的文件。在这种格式下文件默认允许修改,若已存在同名资源则会被覆盖。如果只希望上传指定 key 的文件,并且不允许修改,那么可以将下面的 insertOnly 属性值设为 1。
	// <bucket>:<keyPrefix>,表示只允许用户上传指定以 keyPrefix 为前缀的文件,当且仅当 isPrefixalScope 字段为 1 时生效,isPrefixalScope 为 1 时无法覆盖上传。
	Scope string `json:"scope"`

	// 若为 1,表示允许用户上传以 scope 的 keyPrefix 为前缀的文件。
	IsPrefixalScope int `json:"isPrefixalScope,omitempty"`

	// 上传凭证有效截止时间。Unix时间戳,单位为秒。该截止时间为上传完成后,在七牛空间生成文件的校验时间,而非上传的开始时间,
	// 一般建议设置为上传开始时间 + 3600s,用户可根据具体的业务场景对凭证截止时间进行调整。
	Expires uint64 `json:"deadline"`

	// 若非0, 即使Scope为 Bucket:Key 的形式也是insert only
	InsertOnly uint16 `json:"insertOnly,omitempty"`

	// 唯一属主标识。特殊场景下非常有用,例如根据 App-Client 标识给图片或视频打水印。
	EndUser string `json:"endUser,omitempty"`

	// Web 端文件上传成功后,浏览器执行 303 跳转的 URL。通常用于表单上传。
	// 文件上传成功后会跳转到 <returnUrl>?upload_ret=<queryString>,<queryString>包含 returnBody 内容。
	// 如不设置 returnUrl,则直接将 returnBody 的内容返回给客户端。
	ReturnURL string `json:"returnUrl,omitempty"`

	// 上传成功后,自定义七牛云最终返回給上传端(在指定 returnUrl 时是携带在跳转路径参数中)的数据。支持魔法变量和自定义变量。
	// returnBody 要求是合法的 JSON 文本。
	// 例如 {“key”: $(key), “hash”: $(etag), “w”: $(imageInfo.width), “h”: $(imageInfo.height)}。
	ReturnBody string `json:"returnBody,omitempty"`

	// 上传成功后,七牛云向业务服务器发送 POST 请求的 URL。必须是公网上可以正常进行 POST 请求并能响应 HTTP/1.1 200 OK 的有效 URL。
	// 另外,为了给客户端有一致的体验,我们要求 callbackUrl 返回包 Content-Type 为 “application/json”,即返回的内容必须是合法的
	// JSON 文本。出于高可用的考虑,本字段允许设置多个 callbackUrl(用英文符号 ; 分隔),在前一个 callbackUrl 请求失败的时候会依次
	// 重试下一个 callbackUrl。一个典型例子是:http://<ip1>/callback;http://<ip2>/callback,并同时指定下面的 callbackHost 字段。
	// 在 callbackUrl 中使用 ip 的好处是减少对 dns 解析的依赖,可改善回调的性能和稳定性。指定 callbackUrl,必须指定 callbackbody,
	// 且值不能为空。
	CallbackURL string `json:"callbackUrl,omitempty"`

	// 上传成功后,七牛云向业务服务器发送回调通知时的 Host 值。与 callbackUrl 配合使用,仅当设置了 callbackUrl 时才有效。
	CallbackHost string `json:"callbackHost,omitempty"`

	// 上传成功后,七牛云向业务服务器发送 Content-Type: application/x-www-form-urlencoded 的 POST 请求。业务服务器可以通过直接读取
	// 请求的 query 来获得该字段,支持魔法变量和自定义变量。callbackBody 要求是合法的 url query string。
	// 例如key=$(key)&hash=$(etag)&w=$(imageInfo.width)&h=$(imageInfo.height)。如果callbackBodyType指定为application/json,
	// 则callbackBody应为json格式,例如:{“key”:"$(key)",“hash”:"$(etag)",“w”:"$(imageInfo.width)",“h”:"$(imageInfo.height)"}。
	CallbackBody string `json:"callbackBody,omitempty"`

	// 上传成功后,七牛云向业务服务器发送回调通知 callbackBody 的 Content-Type。默认为 application/x-www-form-urlencoded,也可设置
	// 为 application/json。
	CallbackBodyType string `json:"callbackBodyType,omitempty"`

	// 资源上传成功后触发执行的预转持久化处理指令列表。fileType=2或3(上传归档存储或深度归档存储文件)时,不支持使用该参数。支持魔法变量和自
	// 定义变量。每个指令是一个 API 规格字符串,多个指令用;分隔。请参阅persistenOps详解与示例。同时添加 persistentPipeline 字段,使用专
	// 用队列处理,请参阅persistentPipeline。
	PersistentOps string `json:"persistentOps,omitempty"`

	// 接收持久化处理结果通知的 URL。必须是公网上可以正常进行 POST 请求并能响应 HTTP/1.1 200 OK 的有效 URL。该 URL 获取的内容和持久化处
	// 理状态查询的处理结果一致。发送 body 格式是 Content-Type 为 application/json 的 POST 请求,需要按照读取流的形式读取请求的 body
	// 才能获取。
	PersistentNotifyURL string `json:"persistentNotifyUrl,omitempty"`

	// 转码队列名。资源上传成功后,触发转码时指定独立的队列进行转码。为空则表示使用公用队列,处理速度比较慢。建议使用专用队列。
	PersistentPipeline string `json:"persistentPipeline,omitempty"`

	// saveKey 的优先级设置。为 true 时,saveKey不能为空,会忽略客户端指定的key,强制使用saveKey进行文件命名。参数不设置时,
	// 默认值为false
	ForceSaveKey bool `json:"forceSaveKey,omitempty"` //

	// 自定义资源名。支持魔法变量和自定义变量。forceSaveKey 为false时,这个字段仅当用户上传的时候没有主动指定 key 时起作用;
	// forceSaveKey 为true时,将强制按这个字段的格式命名。
	SaveKey string `json:"saveKey,omitempty"`

	// 限定上传文件大小最小值,单位Byte。小于限制上传文件大小的最小值会被判为上传失败,返回 403 状态码
	FsizeMin int64 `json:"fsizeMin,omitempty"`

	// 限定上传文件大小最大值,单位Byte。超过限制上传文件大小的最大值会被判为上传失败,返回 413 状态码。
	FsizeLimit int64 `json:"fsizeLimit,omitempty"`

	// 开启 MimeType 侦测功能,并按照下述规则进行侦测;如不能侦测出正确的值,会默认使用 application/octet-stream 。
	// 默认设为 0 时:如上传端指定了 MimeType 则直接使用该值,否则按如下顺序侦测 MimeType 值:
	//		1. 检查文件扩展名;
	//		2. 检查 Key 扩展名;
	//		3. 侦测内容。
	// 设为 1 时:则忽略上传端传递的文件 MimeType 信息,并按如下顺序侦测 MimeType 值:
	//		1. 侦测内容;
	//		2. 检查文件扩展名;
	//		3. 检查 Key 扩展名。
	// 设为 -1 时:无论上传端指定了何值直接使用该值。
	DetectMime int `json:"detectMime,omitempty"`

	// 限定用户上传的文件类型。指定本字段值,七牛服务器会侦测文件内容以判断 MimeType,再用判断值跟指定值进行匹配,匹配成功则允许上传,匹配失败则返回 403 状态码。示例:
	// image/* 表示只允许上传图片类型
	// image/jpeg;image/png 表示只允许上传 jpg 和 png 类型的图片
	// !application/json;text/plain 表示禁止上传 json 文本和纯文本。注意最前面的感叹号!
	MimeLimit string `json:"mimeLimit,omitempty"`

	// 资源的存储类型,0表示标准存储,1 表示低频存储,2 表示归档存储,3 表示深度归档存储,4 表示归档直读存储。
	FileType int `json:"fileType,omitempty"`

	CallbackFetchKey uint8 `json:"callbackFetchKey,omitempty"`

	DeleteAfterDays int `json:"deleteAfterDays,omitempty"`

	// 上传单链接限速,单位:bit/s;范围:819200 - 838860800(即800Kb/s - 800Mb/s),如果超出该范围将返回 400 错误
	TrafficLimit uint64 `json:"trafficLimit,omitempty"`

	// 同步转码命令,不推荐使用
	Transform string `json:"transform,omitempty"`

	// 同步转码降级模式,不推荐使用。 缺省: 不降级 (默认); ORIGIN 保存原始内容;
	TransformFallbackMode string `json:"transformFallbackMode,omitempty"`

	// 同步转码降级 Key,不推荐使用。 transformFallbackMode 为 ORIGIN 时必填。
	TransformFallbackKey string `json:"transformFallbackKey,omitempty"`
}

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

func (*PutPolicy) UploadToken

func (p *PutPolicy) UploadToken(cred *auth.Credentials) 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"`

	// 源站下载入口
	IoSrcHost string `json:"io_src,omitempty"`
}

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

func GetRegion

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

GetRegion 用来根据ak和bucket来获取空间相关的机房信息 延用 v2, v2 结构和 v4 结构不同且暂不可替代 Deprecated 使用 GetRegionWithOptions 替换

func GetRegionByID

func GetRegionByID(regionID RegionID) (Region, bool)

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

func GetRegionWithOptions added in v7.17.0

func GetRegionWithOptions(ak, bucket string, options UCApiOptions) (*Region, error)

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

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) GetRegions added in v7.20.0

func (r *Region) GetRegions(ctx context.Context) ([]*region_v2.Region, error)

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 RegionGroup added in v7.14.0

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

func NewRegionGroup added in v7.14.0

func NewRegionGroup(region ...*Region) *RegionGroup

func (*RegionGroup) CouldSwitchRegion added in v7.14.0

func (g *RegionGroup) CouldSwitchRegion() bool

func (*RegionGroup) GetRegion added in v7.14.0

func (g *RegionGroup) GetRegion() *Region

func (*RegionGroup) SwitchRegion added in v7.14.0

func (g *RegionGroup) SwitchRegion() bool

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)

GetRegionsInfo Deprecated and use GetRegionsInfoWithOptions instead Deprecated

func GetRegionsInfoWithOptions added in v7.17.0

func GetRegionsInfoWithOptions(mac *auth.Credentials, options UCApiOptions) ([]RegionInfo, error)

type ResumeUploader

type ResumeUploader struct {
	Client *client.Client
	Cfg    *Config
	// contains filtered or unexported fields
}

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) PutWithoutKeyAndSize added in v7.10.0

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

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

ctx 是请求的上下文。 ret 是上传成功后返回的数据。如果 upToken 中没有设置 CallbackUrl 或 ReturnBody,那么返回的数据结构是 PutRet 结构。 upToken 是由业务服务器颁发的上传凭证。 f 是文件内容的访问接口。 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
	// contains filtered or unexported fields
}

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 // 可选。上传进度记录

	// 可选。
	// 用户自定义参数:key 以"x:"开头,而且 value 不能为空 eg: key为x:qqq
	// 自定义 meta:key 以"x-qn-meta-"开头,而且 value 不能为空 eg: key为x-qn-meta-aaa
	Params             map[string]string
	UpHost             string
	MimeType           string                                        // 可选。
	ChunkSize          int                                           // 可选。每次上传的Chunk大小
	TryTimes           int                                           // 可选。尝试次数
	HostFreezeDuration time.Duration                                 // 可选。主备域名冻结时间(默认:600s),当一个域名请求失败(单个域名会被重试 TryTimes 次),会被冻结一段时间,使用备用域名进行重试,在冻结时间内,域名不能被使用,当一个操作中所有域名竣备冻结操作不在进行重试,返回最后一次操作的错误。
	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                                         // 可选。尝试次数
	HostFreezeDuration time.Duration                               // 可选。主备域名冻结时间(默认:600s),当一个域名请求失败(单个域名会被重试 TryTimes 次),会被冻结一段时间,使用备用域名进行重试,在冻结时间内,域名不能被使用,当一个操作中所有域名竣备冻结操作不在进行重试,返回最后一次操作的错误。
	Progresses         []UploadPartInfo                            // 上传进度
	Notify             func(partNumber int64, ret *UploadPartsRet) // 可选。进度提示(注意多个block是并行传输的)
	NotifyErr          func(partNumber int64, err error)
}

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 StatOpts added in v7.10.0

type StatOpts struct {
	NeedParts bool
}

type UCApiOptions added in v7.17.0

type UCApiOptions struct {
	UseHttps bool //

	RetryMax int // 单域名重试次数

	Hosts []string // api 请求的域名

	// 主备域名冻结时间(默认:600s),当一个域名请求失败(单个域名会被重试 TryTimes 次),会被冻结一段时间,使用备用域名进行重试,在冻结时间内,域名不能被使用,当一个操作中所有域名竣备冻结操作不在进行重试,返回最后一次操作的错误。
	HostFreezeDuration time.Duration

	Client *client.Client // api 请求使用的 client
}

func DefaultUCApiOptions added in v7.17.0

func DefaultUCApiOptions() UCApiOptions

type UcQueryIo added in v7.10.0

type UcQueryIo = UcQueryServerInfo

type UcQueryRet

type UcQueryRet struct {
	TTL       int                            `json:"ttl"`
	Io        map[string]map[string][]string `json:"-"`
	IoInfo    map[string]UcQueryIo           `json:"io"`
	IoSrcInfo map[string]UcQueryIo           `json:"io_src"`
	Up        map[string]UcQueryUp           `json:"up"`
	RsInfo    map[string]UcQueryServerInfo   `json:"rs"`
	RsfInfo   map[string]UcQueryServerInfo   `json:"rsf"`
	ApiInfo   map[string]UcQueryServerInfo   `json:"api"`
}

UcQueryRet 为查询请求的回复

func (*UcQueryRet) UnmarshalJSON added in v7.10.0

func (uc *UcQueryRet) UnmarshalJSON(data []byte) error

type UcQueryServerInfo added in v7.14.0

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

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

type UcQueryUp

type UcQueryUp = UcQueryServerInfo

type UploadConfig added in v7.14.0

type UploadConfig struct {
	UseHTTPS      bool
	UseCdnDomains bool
	Regions       *RegionGroup
}

type UploadExtra added in v7.14.0

type UploadExtra struct {
	// 可选。
	// 用户自定义参数:key 以"x:"开头,而且 value 不能为空 eg: key为x:qqq
	// 自定义 meta:key 以"x-qn-meta-"开头,而且 value 不能为空 eg: key为x-qn-meta-aaa
	Params map[string]string

	// 【可选】尝试次数
	TryTimes int

	// 【可选】主备域名冻结时间(默认:600s),当一个域名请求失败(单个域名会被重试 TryTimes 次),会被冻结一段时间,使用备用域名进行重试,在冻结时间内,域名不能被使用,当一个操作中所有域名竣备冻结操作不在进行重试,返回最后一次操作的错误。
	HostFreezeDuration time.Duration

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

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

	// 【可选】分片上传的上传方式, 默认:UploadResumeV2
	UploadResumeVersion UploadResumeVersion

	// 【可选】上传阈值,当文件大小大于此阈值时使用分片上传;单位:字节,默认:4 * 1024 * 1024
	UploadThreshold int64

	// 【可选】分片上传进度记录
	Recorder Recorder

	// 【可选】分片上传时每次上传的块大小,单位:字节,默认:4 * 1024 * 1024
	PartSize int64
}

type UploadManager added in v7.14.0

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

func NewUploadManager added in v7.14.0

func NewUploadManager(cfg *UploadConfig) *UploadManager

func NewUploadManagerEx added in v7.14.0

func NewUploadManagerEx(cfg *UploadConfig, c *client.Client) *UploadManager

func (*UploadManager) Put added in v7.14.0

func (manager *UploadManager) Put(ctx context.Context, ret interface{}, upToken string, key *string, source UploadSource, extra *UploadExtra) error

type UploadPartInfo added in v7.9.2

type UploadPartInfo struct {
	Etag       string `json:"etag"`
	PartNumber int64  `json:"partNumber"`
	// contains filtered or unexported fields
}

type UploadPartsRet

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

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

type UploadResumeVersion added in v7.14.0

type UploadResumeVersion = int
const (
	UploadResumeV1 UploadResumeVersion = 1
	UploadResumeV2 UploadResumeVersion = 2
)

type UploadRet added in v7.14.0

type UploadRet struct {
	Hash string `json:"hash"`
	Key  string `json:"key"`
}

type UploadSource added in v7.14.0

type UploadSource interface {
	Size() int64
	Rewindable() bool
	Rewind() error
}

func NewUploadSourceFile added in v7.14.0

func NewUploadSourceFile(filePath string) (UploadSource, error)

func NewUploadSourceReader added in v7.14.0

func NewUploadSourceReader(reader io.Reader, size int64) (UploadSource, error)

func NewUploadSourceReaderAt added in v7.14.0

func NewUploadSourceReaderAt(reader io.ReaderAt, size int64) (UploadSource, error)

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