Documentation ¶
Overview ¶
这个文件兼容保留了原来storage暴露出去的变量,函数等
storage 包提供了资源的上传,管理,数据处理等功能。其中资源的上传又提供了表单上传的方式以及分片上传的方式,其中分片上传的方式还支持断点续传。
该包中提供了 BucketManager 用来进行资源管理,比如获取文件信息,文件复制,删除,重命名等,以及很多高级功能如修改文件类型, 修改文件的生命周期,修改文件的存储类型等。
该包中还提供了 FormUploader 和 ResumeUploader 来分别支持表单上传和分片上传,断点续传等功能,对于较大的文件,比如100MB以上的文件,一般 建议采用分片上传的方式来保证上传的效率和可靠性。
对于数据处理,则提供了 OperationManager,可以使用它来发送持久化数据处理请求,及查询数据处理的状态。
package storage 提供了用户存储配置(uc)方面的功能, 定义了UC API 的返回结构体类型
Index ¶
- Constants
- Variables
- func BlockCount(fsize int64) int
- func EncodedEntry(bucket, key string) string
- func EncodedEntryWithoutKey(bucket string) string
- func IsContextExpired(blkPut BlkputRet) bool
- func MakePrivateURL(mac *auth.Credentials, domain, key string, deadline int64) (privateURL string)
- func MakePrivateURLv2(mac *auth.Credentials, domain, key string, deadline int64) (privateURL string)
- func MakePrivateURLv2WithQuery(mac *auth.Credentials, domain, key string, query url.Values, deadline int64) (privateURL string)
- func MakePrivateURLv2WithQueryString(mac *auth.Credentials, domain, key, query string, deadline int64) (privateURL string)
- func MakePublicURL(domain, key string) (finalUrl string)
- func MakePublicURLv2(domain, key string) string
- func MakePublicURLv2WithQuery(domain, key string, query url.Values) string
- func MakePublicURLv2WithQueryString(domain, key, query string) string
- func ParsePutTime(putTime int64) (t time.Time)
- func SetAppName(userApp string) error
- func SetRegionCachePath(newPath string)
- func SetSettings(v *Settings)
- func SetUcHost(host string, useHttps bool)
- func SetUcHosts(hosts ...string)
- func URIChangeMeta(bucket, key string, changeMetas map[string]string) string
- func URIChangeMime(bucket, key, newMime string) string
- func URIChangeMimeAndMeta(bucket, key, newMime string, metas map[string]string) string
- func URIChangeType(bucket, key string, fileType int) string
- func URICopy(srcBucket, srcKey, destBucket, destKey string, force bool) string
- func URIDelete(bucket, key string) string
- func URIDeleteAfterDays(bucket, key string, days int) string
- func URIMove(srcBucket, srcKey, destBucket, destKey string, force bool) string
- func URIRestoreAr(bucket, key string, afterDay int) string
- func URIStat(bucket, key string) string
- type AsyncFetchParam
- type AsyncFetchRet
- type Base64PutExtra
- type Base64Uploader
- type BatchOpRet
- type BlkputRet
- type BucketEventRule
- type BucketInfo
- func (b *BucketInfo) BlackListSet() bool
- func (b *BucketInfo) ImageSources() (srcs []string)
- func (b *BucketInfo) IndexPageOn() bool
- func (b *BucketInfo) IsPrivate() bool
- func (b *BucketInfo) ProtectedOn() bool
- func (b *BucketInfo) Separators() (ret []rune)
- func (b *BucketInfo) TokenAntiLeechModeOn() bool
- func (b *BucketInfo) WhiteListSet() bool
- type BucketLifeCycleRule
- type BucketManager
- func (m *BucketManager) AddBucketEvent(bucket string, rule *BucketEventRule) error
- func (m *BucketManager) AddBucketLifeCycleRule(bucketName string, lifeCycleRule *BucketLifeCycleRule) error
- func (m *BucketManager) AddCorsRules(bucket string, corsRules []CorsRule) error
- func (m *BucketManager) ApiHost(bucket string) (apiHost string, err error)
- func (m *BucketManager) ApiReqHost(bucket string) (reqHost string, err error)
- func (m *BucketManager) AsyncFetch(param AsyncFetchParam) (ret AsyncFetchRet, err error)
- func (m *BucketManager) Batch(operations []string) ([]BatchOpRet, error)
- func (m *BucketManager) BatchWithContext(ctx context.Context, bucket string, operations []string) ([]BatchOpRet, error)
- func (m *BucketManager) BucketInfosInRegion(region RegionID, statistics bool) (bucketInfos []BucketSummary, err error)
- func (m *BucketManager) Buckets(shared bool) ([]string, error)
- func (m *BucketManager) BucketsV4(input *BucketV4Input) (output BucketsV4Output, err error)
- func (m *BucketManager) ChangeMeta(bucket, key string, metas map[string]string) (err error)
- func (m *BucketManager) ChangeMime(bucket, key, newMime string) error
- func (m *BucketManager) ChangeMimeAndMeta(bucket, key, newMime string, metas map[string]string) error
- func (m *BucketManager) ChangeType(bucket, key string, fileType int) error
- func (m *BucketManager) ClearTagging(bucket string) error
- func (m *BucketManager) Copy(srcBucket, srcKey, destBucket, destKey string, force bool) error
- func (m *BucketManager) CreateBucket(bucketName string, regionID RegionID) error
- func (m *BucketManager) DelBucketEvent(bucket, ruleName string) error
- func (m *BucketManager) DelBucketLifeCycleRule(bucketName, ruleName string) error
- func (m *BucketManager) Delete(bucket, key string) error
- func (m *BucketManager) DeleteAfterDays(bucket, key string, days int) error
- func (m *BucketManager) DropBucket(bucketName string) error
- func (m *BucketManager) Fetch(resURL, bucket, key string) (FetchRet, error)
- func (m *BucketManager) FetchWithoutKey(resURL, bucket string) (fetchRet FetchRet, err error)
- func (m *BucketManager) Get(bucket, key string, options *GetObjectInput) (*GetObjectOutput, error)
- func (m *BucketManager) GetBucketEvent(bucket string) ([]BucketEventRule, error)
- func (m *BucketManager) GetBucketInfo(bucketName string) (BucketInfo, error)
- func (m *BucketManager) GetBucketLifeCycleRule(bucketName string) ([]BucketLifeCycleRule, error)
- func (m *BucketManager) GetBucketQuota(bucket string) (quota BucketQuota, err error)
- func (m *BucketManager) GetCorsRules(bucket string) ([]CorsRule, error)
- func (m *BucketManager) GetTagging(bucket string) (map[string]string, error)
- func (m *BucketManager) IoReqHost(bucket string) (reqHost string, err error)
- func (m *BucketManager) IovipHost(bucket string) (iovipHost string, err error)
- func (m *BucketManager) ListBucket(bucket, prefix, delimiter, marker string) (retCh chan listFilesRet2, err error)
- func (m *BucketManager) ListBucketContext(ctx context.Context, bucket, prefix, delimiter, marker string) (retCh chan listFilesRet2, err error)
- func (m *BucketManager) ListBucketDomains(bucket string) (info []DomainInfo, err error)
- func (m *BucketManager) ListFiles(bucket, prefix, delimiter, marker string, limit int) (entries []ListItem, commonPrefixes []string, nextMarker string, hasNext bool, ...)
- func (m *BucketManager) ListFilesWithContext(ctx context.Context, bucket string, options ...ListInputOption) (ret *ListFilesRet, hasNext bool, err error)
- func (m *BucketManager) MakeBucketPrivate(bucket string) error
- func (m *BucketManager) MakeBucketPublic(bucket string) error
- func (m *BucketManager) Move(srcBucket, srcKey, destBucket, destKey string, force bool) error
- func (m *BucketManager) Prefetch(bucket, key string) error
- func (m *BucketManager) RestoreAr(bucket, key string, freezeAfterDays int) error
- func (m *BucketManager) RsHost(bucket string) (rsHost string, err error)
- func (m *BucketManager) RsReqHost(bucket string) (reqHost string, err error)
- func (m *BucketManager) RsfHost(bucket string) (rsfHost string, err error)
- func (m *BucketManager) RsfReqHost(bucket string) (reqHost string, err error)
- func (m *BucketManager) SetBucketAccessMode(bucket string, mode int) error
- func (m *BucketManager) SetBucketAccessStyle(bucket string, mode int) error
- func (m *BucketManager) SetBucketMaxAge(bucket string, maxAge int64) error
- func (m *BucketManager) SetBucketQuota(bucket string, size, count int64) error
- func (m *BucketManager) SetImage(siteURL, bucket string) error
- func (m *BucketManager) SetImageWithHost(siteURL, bucket, host string) error
- func (m *BucketManager) SetReferAntiLeechMode(bucketName string, refererAntiLeechConfig *ReferAntiLeechConfig) error
- func (m *BucketManager) SetRemark(bucketName, remark string) error
- func (m *BucketManager) SetTagging(bucket string, tags map[string]string) error
- func (m *BucketManager) Stat(bucket, key string) (FileInfo, error)
- func (m *BucketManager) StatWithOpts(bucket, key string, opt *StatOpts) (FileInfo, error)
- func (m *BucketManager) TurnOffBucketProtected(bucket string) error
- func (m *BucketManager) TurnOffIndexPage(bucket string) error
- func (m *BucketManager) TurnOnBucketProtected(bucket string) error
- func (m *BucketManager) TurnOnIndexPage(bucket string) error
- func (m *BucketManager) UnsetImage(bucket string) error
- func (m *BucketManager) UpdateBucketEnvent(bucket string, rule *BucketEventRule) error
- func (m *BucketManager) UpdateBucketLifeCycleRule(bucketName string, rule *BucketLifeCycleRule) error
- func (m *BucketManager) UpdateObjectStatus(bucketName string, key string, enable bool) error
- func (m *BucketManager) Zone(bucket string) (z *Zone, err error)
- type BucketManagerOptions
- type BucketQuota
- type BucketSummary
- type BucketTag
- type BucketTagging
- type BucketV4Input
- type BucketV4Output
- type BucketsV4Output
- type Chunk
- type ChunkPutRetryer
- type Client
- type Config
- type CorsRule
- type DomainInfo
- type ErrorInfo
- type FetchRet
- type FileInfo
- type FileRecorder
- func (fileRecorder *FileRecorder) Delete(key string) error
- func (fileRecorder *FileRecorder) GenerateRecorderKey(keyInfos []string, sourceFileInfo os.FileInfo) string
- func (fileRecorder *FileRecorder) Get(key string) ([]byte, error)
- func (fileRecorder *FileRecorder) Set(key string, data []byte) error
- type FopResult
- type FormUploader
- func (p *FormUploader) Put(ctx context.Context, ret interface{}, uptoken, key string, data io.Reader, ...) (err error)
- func (p *FormUploader) PutFile(ctx context.Context, ret interface{}, uptoken, key, localFile string, ...) (err error)
- func (p *FormUploader) PutFileWithoutKey(ctx context.Context, ret interface{}, uptoken, localFile string, ...) (err error)
- func (p *FormUploader) PutWithoutKey(ctx context.Context, ret interface{}, uptoken string, data io.Reader, ...) (err error)
- func (p *FormUploader) UpHost(ak, bucket string) (upHost string, err error)
- type GetObjectInput
- type GetObjectOutput
- type InitPartsRet
- type ListFilesRet
- type ListInputOption
- type ListItem
- type OperationManager
- func (m *OperationManager) ApiHost(bucket string) (apiHost string, err error)
- func (m *OperationManager) Pfop(bucket, key, fops, pipeline, notifyURL string, force bool) (string, error)
- func (m *OperationManager) PfopV2(ctx context.Context, pfopRequest *PfopRequest) (*PfopRet, error)
- func (m *OperationManager) Prefop(persistentID string) (PrefopRet, error)
- func (m *OperationManager) PrefopApiHost(persistentID string) (apiHost string)
- type PfopRequest
- type PfopRet
- type PrefopRet
- type PutExtra
- type PutPolicy
- type PutRet
- type Recorder
- type ReferAntiLeechConfig
- func (r *ReferAntiLeechConfig) AddDomainPattern(pattern string) *ReferAntiLeechConfig
- func (r *ReferAntiLeechConfig) AsQueryString() string
- func (r *ReferAntiLeechConfig) SetEmptyReferer(enable bool) *ReferAntiLeechConfig
- func (r *ReferAntiLeechConfig) SetEnableSource(enable bool) *ReferAntiLeechConfig
- func (r *ReferAntiLeechConfig) SetMode(mode int) *ReferAntiLeechConfig
- func (r *ReferAntiLeechConfig) SetPattern(pattern string) *ReferAntiLeechConfig
- type Region
- func (r *Region) GetApiHost(useHttps bool) string
- func (r *Region) GetIoHost(useHttps bool) string
- func (r *Region) GetRegions(ctx context.Context) ([]*region_v2.Region, error)
- func (r *Region) GetRsHost(useHttps bool) string
- func (r *Region) GetRsfHost(useHttps bool) string
- func (r *Region) String() string
- type RegionGroup
- type RegionID
- type RegionInfo
- type ResumeUploader
- func (p *ResumeUploader) Bput(ctx context.Context, upToken string, ret *BlkputRet, body io.Reader, size int) error
- func (p *ResumeUploader) Mkblk(ctx context.Context, upToken string, upHost string, ret *BlkputRet, ...) error
- func (p *ResumeUploader) Mkfile(ctx context.Context, upToken string, upHost string, ret interface{}, ...) (err error)
- func (p *ResumeUploader) Put(ctx context.Context, ret interface{}, upToken string, key string, ...) error
- func (p *ResumeUploader) PutFile(ctx context.Context, ret interface{}, upToken, key, localFile string, ...) error
- func (p *ResumeUploader) PutFileWithoutKey(ctx context.Context, ret interface{}, upToken, localFile string, ...) error
- func (p *ResumeUploader) PutWithoutKey(ctx context.Context, ret interface{}, upToken string, f io.ReaderAt, ...) error
- func (p *ResumeUploader) PutWithoutKeyAndSize(ctx context.Context, ret interface{}, upToken string, f io.Reader, ...) error
- func (p *ResumeUploader) PutWithoutSize(ctx context.Context, ret interface{}, upToken, key string, r io.Reader, ...) error
- func (p *ResumeUploader) UpHost(ak, bucket string) (upHost string, err error)
- type ResumeUploaderV2
- func (p *ResumeUploaderV2) CompleteParts(ctx context.Context, upToken, upHost string, ret interface{}, ...) (err error)
- func (p *ResumeUploaderV2) InitParts(ctx context.Context, upToken, upHost, bucket, key string, hasKey bool, ...) error
- func (p *ResumeUploaderV2) Put(ctx context.Context, ret interface{}, upToken string, key string, ...) error
- func (p *ResumeUploaderV2) PutFile(ctx context.Context, ret interface{}, upToken, key, localFile string, ...) error
- func (p *ResumeUploaderV2) PutFileWithoutKey(ctx context.Context, ret interface{}, upToken, localFile string, ...) error
- func (p *ResumeUploaderV2) PutWithoutKey(ctx context.Context, ret interface{}, upToken string, f io.ReaderAt, ...) error
- func (p *ResumeUploaderV2) PutWithoutSize(ctx context.Context, ret interface{}, upToken, key string, r io.Reader, ...) error
- func (p *ResumeUploaderV2) UpHost(ak, bucket string) (upHost string, err error)
- func (p *ResumeUploaderV2) UploadParts(ctx context.Context, upToken, upHost, bucket, key string, hasKey bool, ...) error
- type RputExtra
- type RputV2Extra
- type Settings
- type StatOpts
- type UCApiOptions
- type UcQueryIo
- type UcQueryRet
- type UcQueryServerInfo
- type UcQueryUp
- type UploadConfig
- type UploadExtra
- type UploadManager
- type UploadPartInfo
- type UploadPartsRet
- type UploadResumeVersion
- type UploadRet
- type UploadSource
- type Zone
Constants ¶
const ( DefaultRsHost = "rs.qiniu.com" DefaultRsfHost = "rsf.qiniu.com" DefaultAPIHost = "api.qiniu.com" DefaultPubHost = "pu.qbox.me:10200" )
资源管理相关的默认域名
const ( // region code RIDHuadong = RegionID("z0") RIDHuadongZheJiang2 = RegionID("cn-east-2") RIDHuabei = RegionID("z1") RIDHuanan = RegionID("z2") RIDNorthAmerica = RegionID("na0") RIDSingapore = RegionID("as0") )
const ( // 获取下一个分片Reader失败 ErrNextReader = "ErrNextReader" // 超过了最大的重试上传次数 ErrMaxUpRetry = "ErrMaxUpRetry" )
const ( // 上传一个分片失败 ErrUploadChunkFailed = "ErrUploadChunkFailed" // 取消了分片的上传 ErrChunkUpCanceled = "ErrChunkUpCanceled" )
const (
InvalidCtx = 701 // UP: 无效的上下文(bput),可能情况:Ctx非法或者已经被淘汰(太久未使用)
)
上传进度过期错误
Variables ¶
var ( // ErrBucketNotExist 用户存储空间不存在 ErrBucketNotExist = errors.New("bucket not exist") // ErrNoSuchFile 文件已经存在 //lint:ignore ST1005 历史问题,需要兼容 ErrNoSuchFile = errors.New("No such file or directory") )
var ( ErrInvalidPutProgress = errors.New("invalid put progress") ErrPutFailed = errors.New("resumable put failed") ErrBadToken = errors.New("invalid token") )
分片上传过程中可能遇到的错误
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
)
var CallRet = client.CallRet
var DefaultClient = client.DefaultClient
var ErrUnmatchedChecksum = errors.New("unmatched checksum")
分片上传过程中可能遇到的错误
var ResponseError = client.ResponseError
var UcHost = ""
UcHost 为查询空间相关域名的 API 服务地址 设置 UcHost 时,如果不指定 scheme 默认会使用 https Deprecated 使用 SetUcHosts 替换
var UserAgent = client.UserAgent
Functions ¶
func EncodedEntry ¶
EncodedEntry 生成URL Safe Base64编码的 Entry
func EncodedEntryWithoutKey ¶
EncodedEntryWithoutKey 生成 key 为null的情况下 URL Safe Base64编码的Entry
func IsContextExpired ¶
IsContextExpired 检查分片上传的ctx是否过期,提前一天让它过期 因为我们认为如果断点继续上传的话,最长需要1天时间
func MakePrivateURL ¶
func MakePrivateURL(mac *auth.Credentials, domain, key string, deadline int64) (privateURL string)
MakePrivateURL 用来生成私有空间资源下载链接,注意该方法并不会对 key 进行 escape
func MakePrivateURLv2 ¶
func MakePrivateURLv2(mac *auth.Credentials, domain, key string, deadline int64) (privateURL string)
MakePrivateURLv2 用来生成私有空间资源下载链接,并且该方法确保 key 将会被 escape
func MakePrivateURLv2WithQuery ¶
func MakePrivateURLv2WithQuery(mac *auth.Credentials, domain, key string, query url.Values, deadline int64) (privateURL string)
MakePrivateURLv2WithQuery 用来生成私有空间资源下载链接,并且该方法确保 key 将会被 escape,并在 URL 后追加经过编码的查询参数
func MakePrivateURLv2WithQueryString ¶
func MakePrivateURLv2WithQueryString(mac *auth.Credentials, domain, key, query string, deadline int64) (privateURL string)
MakePrivateURLv2WithQueryString 用来生成私有空间资源下载链接,并且该方法确保 key 将会被 escape,并在 URL 后直接追加查询参数
func MakePublicURL ¶
MakePublicURL 用来生成公开空间资源下载链接,注意该方法并不会对 key 进行 escape
func MakePublicURLv2 ¶
MakePublicURLv2 用来生成公开空间资源下载链接,并且该方法确保 key 将会被 escape
func MakePublicURLv2WithQuery ¶
MakePublicURLv2WithQuery 用来生成公开空间资源下载链接,并且该方法确保 key 将会被 escape,并在 URL 后追加经过编码的查询参数
func MakePublicURLv2WithQueryString ¶
MakePublicURLv2WithQueryString 用来生成公开空间资源下载链接,并且该方法确保 key 将会被 escape,并在 URL 后直接追加查询参数
func ParsePutTime ¶
ParsePutTime 提供了将PutTime转换为 time.Time 的功能
func SetRegionCachePath ¶
func SetRegionCachePath(newPath string)
func URIChangeMeta ¶
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 ¶
URIChangeMime 构建 chgm 接口的请求命令
func URIChangeMimeAndMeta ¶
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 ¶
URIChangeType 构建 chtype 接口的请求命令
func URIDeleteAfterDays ¶
URIDeleteAfterDays 构建 deleteAfterDays 接口的请求命令
func URIRestoreAr ¶
URIRestoreAr 构建 restoreAr 接口的请求命令
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 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"删除接口删除文件, 这个是一个事件; 当这个事件发生的时候, 我们要对哪些文件,做什么处理,是否要作回调, 都可以通过这个结构体配置
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) 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) TokenAntiLeechModeOn ¶
func (b *BucketInfo) TokenAntiLeechModeOn() bool
TokenAntiLeechModeOn 返回是否使用token签名防盗链开启了
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 ¶
func NewBucketManagerExWithOptions(mac *auth.Credentials, cfg *Config, clt *clientv1.Client, options BucketManagerOptions) *BucketManager
func (*BucketManager) AddBucketEvent ¶
func (m *BucketManager) AddBucketEvent(bucket string, rule *BucketEventRule) 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 ¶
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 ¶
func (m *BucketManager) BucketsV4(input *BucketV4Input) (output BucketsV4Output, err error)
BucketsV4 获取该用户的指定区域内的空间信息,注意该 API 以分页形式返回 Bucket 列表
func (*BucketManager) ChangeMeta ¶
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 ¶
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) 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 ¶
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) ([]BucketEventRule, error)
GetBucketEvent 获取指定存储空间的事件通知规则
func (*BucketManager) GetBucketInfo ¶
func (m *BucketManager) GetBucketInfo(bucketName string) (BucketInfo, 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 ¶
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) error
SetImage 用来设置空间镜像源
func (*BucketManager) SetImageWithHost ¶
func (m *BucketManager) SetImageWithHost(siteURL, bucket, host string) error
SetImageWithHost 用来设置空间镜像源,额外添加回源Host头部
func (*BucketManager) SetReferAntiLeechMode ¶
func (m *BucketManager) SetReferAntiLeechMode(bucketName string, refererAntiLeechConfig *ReferAntiLeechConfig) error
SetReferAntiLeechMode 配置存储空间referer防盗链模式
func (*BucketManager) SetRemark ¶
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 ¶
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) error
UnsetImage 用来取消空间镜像源设置
func (*BucketManager) UpdateBucketEnvent ¶
func (m *BucketManager) UpdateBucketEnvent(bucket string, rule *BucketEventRule) 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"}
type BucketManagerOptions ¶
type BucketManagerOptions struct { // 单域名重试次数,当前只有 uc 相关的服务有多域名 RetryMax int // 主备域名冻结时间(默认:600s),当一个域名请求失败(单个域名会被重试 TryTimes 次),会被冻结一段时间,使用备用域名进行重试,在冻结时间内,域名不能被使用,当一个操作中所有域名竣备冻结操作不在进行重试,返回最后一次操作的错误。 HostFreezeDuration time.Duration // 域名解析器 Resolver resolver.Resolver // 域名选择器 Chooser chooser.Chooser // 退避器 Backoff backoff.Backoff // 重试器 Retrier retrier.Retrier // 签名前回调函数 BeforeSign func(*http.Request) // 签名后回调函数 AfterSign func(*http.Request) // 签名失败回调函数 SignError func(*http.Request, error) // 域名解析前回调函数 BeforeResolve func(*http.Request) // 域名解析后回调函数 AfterResolve func(*http.Request, []net.IP) // 域名解析错误回调函数 ResolveError func(*http.Request, error) // 退避前回调函数 BeforeBackoff func(*http.Request, *retrier.RetrierOptions, time.Duration) // 退避后回调函数 AfterBackoff func(*http.Request, *retrier.RetrierOptions, time.Duration) // 请求前回调函数 BeforeRequest func(*http.Request, *retrier.RetrierOptions) // 请求后回调函数 AfterResponse func(*http.Response, *retrier.RetrierOptions, error) }
type BucketQuota ¶
BucketQuota 七牛存储空间的配额信息
type BucketSummary ¶
type BucketSummary struct { // 存储空间名字 Name string `json:"name"` Info BucketInfo `json:"info"` }
BucketSummary 存储空间信息
type BucketTagging ¶
type BucketTagging struct {
Tags []BucketTag `json:"Tags"`
}
BucketTagging 为 Bucket 设置标签
type BucketV4Input ¶
type BucketV4Input struct { // 指定区域 ID,如果传入空字符串,则查询所有区域 Region string // 最多获取的空间数,如果传入 0,则查询 20 个空间 Limit uint64 // 获取下一页的标记 Marker string }
BucketV4 查询条件
type BucketV4Output ¶
type BucketV4Output struct { // 空间名称 Name string `json:"name"` // 空间区域 ID Region string `json:"region"` // 空间是否私有 Private bool `json:"private"` // 空间创建时间 Ctime time.Time `json:"ctime"` }
BucketV4 返回的空间信息
type BucketsV4Output ¶
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
type ChunkPutRetryer ¶
type ChunkPutRetryer interface {
Retry(ck *Chunk)
}
ChunkPutRetryer 上传分片失败时候重试接口
type Config ¶
type Config struct { //兼容保留 Zone *Region //空间所在的存储区域 Region *Region // 如果设置的Host本身是以http://开头的,又设置了该字段为true,那么优先使用该字段,使用https协议 // 同理如果该字段为false, 但是设置的host以https开头,那么使用http协议通信 UseHTTPS bool //是否使用https域名 UseCdnDomains bool //是否使用cdn加速域名 AccelerateUploading bool //是否启用上传加速 CentralRsHost string //中心机房的RsHost,用于list bucket // 兼容保留 RsHost string RsfHost string UpHost string ApiHost string IoHost string }
Config 为文件上传,资源管理等配置
func (*Config) ApiReqHost ¶
获取apiHost 优先使用Zone中的Host信息,如果Zone中的host信息没有配置,那么使用Config中的Host信息
func (*Config) GetRegion ¶
GetRegion返回一个Region指针 默认返回最新的Region, 如果该字段没有,那么返回兼容保留的Zone, 如果都为nil, 就返回nil
func (*Config) RsfReqHost ¶
获取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 FetchRet ¶
type FetchRet struct { Hash string `json:"hash"` Fsize int64 `json:"fsize"` MimeType string `json:"mimeType"` Key string `json:"key"` }
FetchRet 资源抓取的返回值
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 文件基本信息
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
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 { // Deprecated Client *client.Client // Deprecated 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 结构的描述。
type GetObjectInput ¶
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 ¶
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 ¶
func (g *GetObjectOutput) Close() error
type InitPartsRet ¶
InitPartsRet 表示分片上传 v2 初始化完毕的返回值
type ListFilesRet ¶
type ListInputOption ¶
type ListInputOption func(options *listInputOptions)
func ListInputOptionsDelimiter ¶
func ListInputOptionsDelimiter(delimiter string) ListInputOption
func ListInputOptionsLimit ¶
func ListInputOptionsLimit(limit int) ListInputOption
func ListInputOptionsMarker ¶
func ListInputOptionsMarker(marker string) ListInputOption
func ListInputOptionsNeedParts ¶
func ListInputOptionsNeedParts(needParts bool) ListInputOption
func ListInputOptionsPrefix ¶
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 为文件列举的返回值
type OperationManager ¶
type OperationManager struct { Client *client.Client Mac *auth.Credentials Cfg *Config // contains filtered or unexported fields }
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)
Deprecated
func (*OperationManager) Pfop ¶
func (m *OperationManager) Pfop(bucket, key, fops, pipeline, notifyURL string, force bool) (string, error)
Pfop 持久化数据处理
bucket 资源空间 key 源资源名 fops 云处理操作列表, notifyURL 处理结果通知接收URL pipeline 多媒体处理队列名称 force 强制执行数据处理
func (*OperationManager) PfopV2 ¶
func (m *OperationManager) PfopV2(ctx context.Context, pfopRequest *PfopRequest) (*PfopRet, error)
Pfop 持久化数据处理 v2
func (*OperationManager) Prefop ¶
func (m *OperationManager) Prefop(persistentID string) (PrefopRet, error)
Prefop 持久化处理状态查询
func (*OperationManager) PrefopApiHost ¶
func (m *OperationManager) PrefopApiHost(persistentID string) (apiHost string)
Deprecated
type PfopRequest ¶
type PfopRequest struct { BucketName string // 空间名称 ObjectName string // 对象名称 Fops string // 数据处理命令列表,以 `;` 分隔,可以指定多个数据处理命令,与 `workflowTemplateID` 二选一 NotifyUrl string // 处理结果通知接收 URL Force int64 // 强制执行数据处理,设为 `1`,则可强制执行数据处理并覆盖原结果 Type int64 // 任务类型,支持 `0` 表示普通任务,`1` 表示闲时任务 Pipeline string // 对列名,仅适用于普通任务 WorkflowTemplateID string // 工作流模板 ID }
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"` Type int64 `json:"type,omitempty"` InputBucket string `json:"inputBucket,omitempty"` InputKey string `json:"inputKey,omitempty"` Pipeline string `json:"pipeline,omitempty"` TaskFrom string `json:"taskFrom,omitempty"` Reqid string `json:"reqid,omitempty"` CreatedAt time.Time `json:"creationDate,omitempty"` Items []FopResult }
PrefopRet 为数据处理请求的状态查询回复内容
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"` // 任务类型。0: 普通任务,1: 闲时任务 PersistentType int64 `json:"persistentType,omitempty"` // 工作流模版 ID PersistentWorkflowTemplateID string `json:"persistentWorkflowTemplateID,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 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 ¶
GetRegion 用来根据ak和bucket来获取空间相关的机房信息 延用 v2, v2 结构和 v4 结构不同且暂不可替代 Deprecated 使用 GetRegionWithOptions 替换
func GetRegionByID ¶
GetDefaultReion 根据RegionID获取对应的Region信息
func GetRegionWithOptions ¶
func GetRegionWithOptions(ak, bucket string, options UCApiOptions) (*Region, error)
GetRegionWithOptions 用来根据ak和bucket来获取空间相关的机房信息
func (*Region) GetRegions ¶
type RegionGroup ¶
type RegionGroup struct {
// contains filtered or unexported fields
}
func NewRegionGroup ¶
func NewRegionGroup(region ...*Region) *RegionGroup
func (*RegionGroup) CouldSwitchRegion ¶
func (g *RegionGroup) CouldSwitchRegion() bool
func (*RegionGroup) GetRegion ¶
func (g *RegionGroup) GetRegion() *Region
func (*RegionGroup) SwitchRegion ¶
func (g *RegionGroup) SwitchRegion() bool
type RegionInfo ¶
func GetRegionsInfo ¶
func GetRegionsInfo(mac *auth.Credentials) ([]RegionInfo, error)
GetRegionsInfo Deprecated and use GetRegionsInfoWithOptions instead Deprecated
func GetRegionsInfoWithOptions ¶
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 ¶
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 ¶
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 UCApiOptions ¶
type UCApiOptions struct { // 是否使用 HTTPS 协议 UseHttps bool // 是否加速上传 AccelerateUploading bool // 单域名重试次数 RetryMax int // api 请求的域名 Hosts []string // 主备域名冻结时间(默认:600s),当一个域名请求失败(单个域名会被重试 TryTimes 次),会被冻结一段时间,使用备用域名进行重试,在冻结时间内,域名不能被使用,当一个操作中所有域名竣备冻结操作不在进行重试,返回最后一次操作的错误。 HostFreezeDuration time.Duration // api 请求使用的 client Client *client.Client // api 使用的域名解析器 Resolver resolver.Resolver // api 使用的 IP 选择器 Chooser chooser.Chooser // api 使用的退避器 Backoff backoff.Backoff // api 使用的重试器 Retrier retrier.Retrier // 签名前回调函数 BeforeSign func(*http.Request) // 签名后回调函数 AfterSign func(*http.Request) // 签名失败回调函数 SignError func(*http.Request, error) // 域名解析前回调函数 BeforeResolve func(*http.Request) // 域名解析后回调函数 AfterResolve func(*http.Request, []net.IP) // 域名解析错误回调函数 ResolveError func(*http.Request, error) // 退避前回调函数 BeforeBackoff func(*http.Request, *retrier.RetrierOptions, time.Duration) // 退避后回调函数 AfterBackoff func(*http.Request, *retrier.RetrierOptions, time.Duration) // 请求前回调函数 BeforeRequest func(*http.Request, *retrier.RetrierOptions) // 请求后回调函数 AfterResponse func(*http.Response, *retrier.RetrierOptions, error) }
func DefaultUCApiOptions ¶
func DefaultUCApiOptions() UCApiOptions
type UcQueryIo ¶
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 ¶
func (uc *UcQueryRet) UnmarshalJSON(data []byte) error
type UcQueryServerInfo ¶
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 ¶
type UploadConfig struct { UseHTTPS bool UseCdnDomains bool AccelerateUploading bool Regions *RegionGroup }
UploadConfig 为 UploadManager 提供配置信息
type UploadExtra ¶
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 ¶
type UploadManager struct {
// contains filtered or unexported fields
}
func NewUploadManager ¶
func NewUploadManager(cfg *UploadConfig) *UploadManager
func NewUploadManagerEx ¶
func NewUploadManagerEx(cfg *UploadConfig, c *client.Client) *UploadManager
func (*UploadManager) Put ¶
func (manager *UploadManager) Put(ctx context.Context, ret interface{}, upToken string, key *string, source UploadSource, extra *UploadExtra) error
type UploadPartInfo ¶
type UploadPartsRet ¶
UploadPartsRet 表示分片上传 v2 每个片上传完毕的返回值
type UploadResumeVersion ¶
type UploadResumeVersion = int
const ( UploadResumeV1 UploadResumeVersion = 1 UploadResumeV2 UploadResumeVersion = 2 )
type UploadSource ¶
func NewUploadSourceFile ¶
func NewUploadSourceFile(filePath string) (UploadSource, error)
func NewUploadSourceReader ¶
func NewUploadSourceReader(reader io.Reader, size int64) (UploadSource, error)
func NewUploadSourceReaderAt ¶
func NewUploadSourceReaderAt(reader io.ReaderAt, size int64) (UploadSource, error)
Source Files ¶
- backward_compatible.go
- base64_upload.go
- bucket.go
- bucket_get.go
- bucket_list.go
- buckets_v4.go
- config.go
- doc.go
- errs.go
- form_upload.go
- pfop.go
- recorder.go
- region.go
- region_group.go
- region_uc_v2.go
- region_uc_v4.go
- resume_uploader.go
- resume_uploader_apis.go
- resume_uploader_base.go
- resume_uploader_deprecated.go
- resume_uploader_v2.go
- token.go
- uc.go
- upload_manager.go
- upload_source.go
- uploader_base.go
- util.go
- zone.go