Documentation ¶
Overview ¶
Package uploader 上传包
Index ¶
- Constants
- func DoUpload(uploadURL string, readerlen64 rio.ReaderLen64, checkFunc CheckFunc)
- type BlockState
- type CheckFunc
- type InstanceState
- type MultiError
- type MultiUpload
- type MultiUploader
- func (muer *MultiUploader) Cancel()
- func (muer *MultiUploader) Execute()
- func (muer *MultiUploader) InstanceState() *InstanceState
- func (muer *MultiUploader) OnCancel(onCancelEvent requester.Event)
- func (muer *MultiUploader) OnError(onErrorEvent requester.EventOnError)
- func (muer *MultiUploader) OnExecute(onExecuteEvent requester.Event)
- func (muer *MultiUploader) OnFinish(onFinishEvent requester.Event)
- func (muer *MultiUploader) OnSuccess(onSuccessEvent requester.Event)
- func (muer *MultiUploader) OnUploadStatusEvent(f UploadStatusFunc)
- func (muer *MultiUploader) SetInstanceState(is *InstanceState)
- type MultiUploaderConfig
- type Readed64
- type SplitUnit
- type Status
- type UploadStatus
- type UploadStatusFunc
- type Uploader
- func (u *Uploader) Execute()
- func (u *Uploader) GetStatusChan() <-chan Status
- func (u *Uploader) OnExecute(fn func())
- func (u *Uploader) OnFinish(fn func())
- func (u *Uploader) SetCheckFunc(checkFunc CheckFunc)
- func (u *Uploader) SetClient(c *requester.HTTPClient)
- func (u *Uploader) SetContentType(contentType string)
Constants ¶
const ( // BufioReadSize bufio 缓冲区大小, 用于上传时读取文件 BufioReadSize = int(64 * converter.KB) // 64KB )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type BlockState ¶
type BlockState struct { ID int `json:"id"` Range transfer.Range `json:"range"` CheckSum string `json:"checksum"` }
BlockState 文件区块信息
func SplitBlock ¶
func SplitBlock(fileSize, blockSize int64) (blockList []*BlockState)
SplitBlock 文件分块
type InstanceState ¶
type InstanceState struct {
BlockList []*BlockState `json:"block_list"`
}
InstanceState 上传断点续传信息
type MultiError ¶
MultiError 多线程上传的错误
func (*MultiError) Error ¶
func (me *MultiError) Error() string
type MultiUpload ¶
type MultiUpload interface { Precreate() (perr error) TmpFile(ctx context.Context, partseq int, partOffset int64, readerlen64 rio.ReaderLen64) (checksum string, terr error) CreateSuperFile(checksumList ...string) (cerr error) }
MultiUpload 支持多线程的上传, 可用于断点续传
type MultiUploader ¶
type MultiUploader struct {
// contains filtered or unexported fields
}
MultiUploader 多线程上传
func NewMultiUploader ¶
func NewMultiUploader(multiUpload MultiUpload, file rio.ReaderAtLen64, config *MultiUploaderConfig) *MultiUploader
NewMultiUploader 初始化上传
func (*MultiUploader) InstanceState ¶
func (muer *MultiUploader) InstanceState() *InstanceState
InstanceState 返回断点续传信息
func (*MultiUploader) OnCancel ¶
func (muer *MultiUploader) OnCancel(onCancelEvent requester.Event)
OnCancel 设置取消上传事件
func (*MultiUploader) OnError ¶
func (muer *MultiUploader) OnError(onErrorEvent requester.EventOnError)
OnError 设置上传发生错误事件
func (*MultiUploader) OnExecute ¶
func (muer *MultiUploader) OnExecute(onExecuteEvent requester.Event)
OnExecute 设置开始上传事件
func (*MultiUploader) OnFinish ¶
func (muer *MultiUploader) OnFinish(onFinishEvent requester.Event)
OnFinish 设置结束上传事件
func (*MultiUploader) OnSuccess ¶
func (muer *MultiUploader) OnSuccess(onSuccessEvent requester.Event)
OnSuccess 设置成功上传事件
func (*MultiUploader) OnUploadStatusEvent ¶
func (muer *MultiUploader) OnUploadStatusEvent(f UploadStatusFunc)
OnUploadStatusEvent 设置上传状态事件
func (*MultiUploader) SetInstanceState ¶
func (muer *MultiUploader) SetInstanceState(is *InstanceState)
SetInstanceState 设置InstanceState, 断点续传信息
type MultiUploaderConfig ¶
type MultiUploaderConfig struct { Parallel int // 上传并发量 BlockSize int64 // 上传分块 MaxRate int64 // 限制最大上传速度 }
MultiUploaderConfig 多线程上传配置
type Readed64 ¶
type Readed64 interface { rio.ReaderLen64 Readed() int64 }
Readed64 增加获取已读取数据量, 用于统计速度
type Status ¶
type Status interface { TotalSize() int64 // 总大小 Uploaded() int64 // 已上传数据 SpeedsPerSecond() int64 // 每秒的上传速度 TimeElapsed() time.Duration // 上传时间 }
Status 上传状态接口
type UploadStatus ¶
type UploadStatus struct {
// contains filtered or unexported fields
}
UploadStatus 上传状态
func (*UploadStatus) SpeedsPerSecond ¶
func (us *UploadStatus) SpeedsPerSecond() int64
SpeedsPerSecond 返回每秒的上传速度
func (*UploadStatus) TimeElapsed ¶
func (us *UploadStatus) TimeElapsed() time.Duration
TimeElapsed 返回上传时间
type UploadStatusFunc ¶
type UploadStatusFunc func(status Status, updateChan <-chan struct{})
type Uploader ¶
type Uploader struct {
// contains filtered or unexported fields
}
Uploader 上传
func NewUploader ¶
func NewUploader(url string, readerlen64 rio.ReaderLen64) (uploader *Uploader)
NewUploader 返回 uploader 对象, url: 上传地址, readerlen64: 实现 rio.ReaderLen64 接口的对象, 例如文件
func (*Uploader) GetStatusChan ¶
GetStatusChan 获取上传状态
func (*Uploader) SetCheckFunc ¶
SetCheckFunc 设置上传完成的检测函数
func (*Uploader) SetClient ¶
func (u *Uploader) SetClient(c *requester.HTTPClient)
SetClient 设置http客户端
func (*Uploader) SetContentType ¶
SetContentType 设置Content-Type