github.com/qiniu/go-sdk/v7@v7.27.0/storagev2/uploader/interfaces.go (about) 1 package uploader 2 3 import ( 4 "context" 5 "io" 6 7 httpclient "github.com/qiniu/go-sdk/v7/storagev2/http_client" 8 resumablerecorder "github.com/qiniu/go-sdk/v7/storagev2/uploader/resumable_recorder" 9 "github.com/qiniu/go-sdk/v7/storagev2/uploader/source" 10 "github.com/qiniu/go-sdk/v7/storagev2/uptoken" 11 ) 12 13 type ( 14 // 上传对象接口 15 Uploader interface { 16 // 上传文件 17 UploadFile(context.Context, string, *ObjectOptions, interface{}) error 18 19 // 上传 io.Reader 20 UploadReader(context.Context, io.Reader, *ObjectOptions, interface{}) error 21 } 22 23 // 分片上传器接口 24 MultiPartsUploader interface { 25 // 初始化分片上传 26 InitializeParts(context.Context, source.Source, *MultiPartsObjectOptions) (InitializedParts, error) 27 28 // 尝试恢复分片,如果返回 nil 表示恢复失败 29 TryToResume(context.Context, source.Source, *MultiPartsObjectOptions) InitializedParts 30 31 // 上传分片 32 UploadPart(context.Context, InitializedParts, source.Part, *UploadPartOptions) (UploadedPart, error) 33 34 // 完成分片上传,生成对象 35 CompleteParts(context.Context, InitializedParts, []UploadedPart, interface{}) error 36 37 // 获取分片上传选项 38 MultiPartsUploaderOptions() *MultiPartsUploaderOptions 39 } 40 41 // 经过初始化的分片上传 42 InitializedParts interface { 43 // 关闭分片上传,InitializedParts 一旦使用完毕,无论是否成功,都应该调用该方法关闭 44 io.Closer 45 } 46 47 // 已经上传的分片 48 UploadedPart interface { 49 // 分片编号 50 PartNumber() uint64 51 52 // 分片偏移量 53 Offset() uint64 54 55 // 分片大小 56 PartSize() uint64 57 } 58 59 // 分片上传调度器 60 multiPartsUploaderScheduler interface { 61 // 上传数据源的全部分片 62 UploadParts(context.Context, InitializedParts, source.Source, *UploadPartsOptions) ([]UploadedPart, error) 63 64 // 获取分片上传器实例 65 MultiPartsUploader() MultiPartsUploader 66 67 // 获取最大分片大小 68 PartSize() uint64 69 } 70 // 分片上传器选项 71 MultiPartsUploaderOptions struct { 72 // HTTP 客户端选项 73 httpclient.Options 74 75 // 上传凭证接口 76 UpTokenProvider uptoken.Provider 77 78 // 可恢复记录,如果不设置,则无法进行断点续传 79 ResumableRecorder resumablerecorder.ResumableRecorder 80 } 81 )