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  )