kmgQiniu

package
v0.0.0-...-05317bf Latest Latest
Warning

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

Go to latest
Published: Nov 21, 2015 License: MIT Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Download = DownloadDir
View Source
var ErrNoFile = errors.New("Not found file")
View Source
var ThreadNum = 5

上传文件或目录

Functions

func ComputeHashFromBytes

func ComputeHashFromBytes(b []byte) (etag string)

func ComputeHashFromFile

func ComputeHashFromFile(filename string) (etag string, err error)

计算从文件计算七牛hash值

func DownloadDir

func DownloadDir(ctx *Context, remoteRoot string, localRoot string) (err error)

@deprecated

func DownloadFile

func DownloadFile(ctx *Context, remotePath string, localPath string) (err error)

@deprecated TODO 这个会多建一个空目录,这个算安全隐患.

func DownloadFileWithHash

func DownloadFileWithHash(ctx *Context, remotePath string, localPath string, hash string) (err error)

下载单个文件,到本地,会覆盖本地已经存在的文件,会创建所有父级目录,会使用hash检查文件是否存在. @deprecated

func ListPrefix

func ListPrefix(ctx *Context, prefix string) (entries []rsf.ListItem, err error)

列出所有前缀是xxx的数据, 已处理1000个限制 已看过sdk的文档,此处没有很简单的办法可以进行并发优化.

func NormalizeRemotePath

func NormalizeRemotePath(path string) string

正规化传给七牛的远程路径 解决windows目录分隔符和开头的"/"的问题

func RemovePrefix

func RemovePrefix(ctx *Context, prefix string) (err error)

使用前缀删除文件,没有文件删,不报错

func UploadDir

func UploadDir(ctx *Context, localRoot string, remoteRoot string) (err error)

单线程上传目录 检查同文件名和同内容的文件是否存在,如果内容相同便不上传

func UploadDirMulitThread

func UploadDirMulitThread(ctx *Context, localRoot string, remoteRoot string) (err error)

多线程上传目录 1.某个文件仅在一个线程中上传, 2.检查同名和同内容的文件是否已经存在了,如果存在,且hash相同便不上传(断点续传) TODO 解决一边上传,一边修改的bug.

func UploadFileCheckExist

func UploadFileCheckExist(ctx *Context, localPath string, remotePath string) (err error)

上传文件,检查同名和同内容文件 先找cdn上是不是已经有一样的文件了,以便分文件断点续传,再上传

func UploadFileWithHash

func UploadFileWithHash(ctx *Context, localPath string, remotePath string, expectHash string) (err error)

上传文件,检查返回的hash和需要的hash是否一致

Types

type Bucket

type Bucket struct {
	Ak string
	Sk string

	Name      string //空间名
	Domain    string //下载使用的域名
	IsPrivate bool   // 是否是私有Api
}

type Context

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

func NewContext

func NewContext(bucket Bucket) *Context

注意: 由于实现的问题,全局只能使用一个Context, TODO 解决全局只能使用一个Context的问题

func (*Context) BatchStat

func (ctx *Context) BatchStat(PathList []string) (output []FileInfo, err error)

批量获取文件信息 PathList 是远程路径 路径里面开头带 / 和不带 / 效果一致. FileInfo 里面的 Hash是空表示没有找到文件.

func (*Context) DownloadOneToFile

func (ctx *Context) DownloadOneToFile(remoteRoot string, localRoot string) (err error)

下载一个文件, 开头带 / 或不带 / 效果一致

func (*Context) DownloadToBytes

func (ctx *Context) DownloadToBytes(remotePath string) (b []byte, err error)

func (*Context) DownloadToFile

func (ctx *Context) DownloadToFile(remoteRoot string, localRoot string) (err error)

可以下载文件或目录 remoteRoot 开头带 / 或不带 / 效果一致

func (*Context) DownloadToWriter

func (ctx *Context) DownloadToWriter(remotePath string, w io.Writer) (err error)

下载到一个Writer里面

func (*Context) GetName

func (ctx *Context) GetName() string

func (*Context) GetSchemeAndDomain

func (ctx *Context) GetSchemeAndDomain() string

返回 scheme和domain ,结尾没有 / 例如: http://xxx.com

func (*Context) ListPrefix

func (ctx *Context) ListPrefix(prefix string) (output []FileInfo, err error)

func (*Context) MustDownloadToBytes

func (ctx *Context) MustDownloadToBytes(remotePath string) (b []byte)

func (*Context) MustDownloadToFile

func (ctx *Context) MustDownloadToFile(remoteRoot string, localRoot string)

func (*Context) MustListPrefix

func (ctx *Context) MustListPrefix(prefix string) (output []FileInfo)

返回的path前面不带 /

func (*Context) MustRemoveBatch

func (ctx *Context) MustRemoveBatch(PathList []string)

目录开头带 / 或不带 / 效果一致

func (*Context) MustUploadFromBytes

func (ctx *Context) MustUploadFromBytes(remotePath string, context []byte)

func (*Context) MustUploadFromFile

func (ctx *Context) MustUploadFromFile(localRoot string, remoteRoot string)

func (*Context) RemovePrefix

func (ctx *Context) RemovePrefix(prefix string) (err error)

prefix 开头带 / 或不带 / 效果一致

func (*Context) UploadFromBytes

func (ctx *Context) UploadFromBytes(remotePath string, b []byte) (err error)

上传字节 remotePath 开头带 / 或不带 / 效果完全不一样. 正常情况应该是不带 /的

func (*Context) UploadFromFile

func (ctx *Context) UploadFromFile(localRoot string, remoteRoot string) (err error)

可以上传文件或目录 remoteRoot 开头带 / 或不带 / 效果一致

func (*Context) UploadFromReader

func (ctx *Context) UploadFromReader(remotePath string, reader io.Reader) (err error)

上传字节 remotePath 开头带 / 或不带 / 效果完全不一样. 正常情况应该是不带 /的 此处没有实现流式接口,这个接口的效果和 UploadFromBytes 没有什么差别,(依然会爆内存) 分片上传 功能似乎可以解决此类问题,可惜太过复杂了.

type FileInfo

type FileInfo struct {
	Path    string //
	Hash    string
	Size    int64
	ModTime time.Time
}

func (FileInfo) IsExist

func (fi FileInfo) IsExist() bool

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL