Documentation ¶
Overview ¶
Example (Client_AuthURL) ¶
OAuth 流程
cli := baiduyun.New(baiduyun.WithAppCredential("id", "secret")) // 生成 OAuth 授权页面的 URL fmt.Println(cli.AuthURL("http://127.0.0.1:3000")) // 上一步生成的 code 换取 token res, err := cli.AuthAccessToken("afe6db28ed86582262b074df3f3f6cb2", "http://127.0.0.1:3000") if err != nil { fmt.Println("err", err) } else { fmt.Printf("token: %#v\n", res) }
Output:
Example (Client_DownloadFileID) ¶
下载文件
cli := baiduyun.New( baiduyun.WithAppCredential("id", "secret"), baiduyun.WithDownloadTimeout(time.Minute*120), baiduyun.WithToken("access-token", "refresh-token"), ) reader, err := cli.DownloadFileID(868217257594741) if err != nil { fmt.Println("err", err) return } bs, err := io.ReadAll(reader) if err != nil { fmt.Println("err", err) return } err = ioutil.WriteFile("./example.mp4", bs, 0644) if err != nil { fmt.Println("err", err) return }
Output:
Example (Client_FileList) ¶
获取文件列表
cli := baiduyun.New( baiduyun.WithAppCredential("id", "secret"), baiduyun.WithToken("access-token", "refresh-token"), ) files, err := cli.FileList(&baiduyun.FileListReq{ Dir: &[]string{"/"}[0], Order: nil, Desc: nil, Start: nil, Limit: nil, Web: nil, Folder: nil, ShowEmpty: nil, }) if err != nil { fmt.Println("err", err) } else { for _, file := range files { fmt.Println(file.FsID, file.Path) } }
Output:
Example (Client_FileMetadata) ¶
获取文件元数据
cli := baiduyun.New( baiduyun.WithAppCredential("id", "secret"), baiduyun.WithToken("access-token", "refresh-token"), ) files, err := cli.FileMetadata(&baiduyun.FileMetadataReq{ FsIDs: []int64{1, 2}, DLink: nil, Path: nil, Thumb: nil, Extra: nil, NeedMedia: nil, }) if err != nil { fmt.Println("err", err) } else { for _, file := range files { fmt.Println(file.FsID, file.Path) } }
Output:
Example (Client_FileSearch) ¶
搜索文件
cli := baiduyun.New( baiduyun.WithAppCredential("id", "secret"), baiduyun.WithToken("access-token", "refresh-token"), ) hasMore, files, err := cli.FileSearch(&baiduyun.FileSearchReq{ Key: "文本", Dir: nil, Page: nil, Num: nil, Recursion: nil, Web: nil, }) if err != nil { fmt.Println("err", err) } else { fmt.Println("hasMore", hasMore) for _, file := range files { fmt.Println(file.FsID, file.Path) } }
Output:
Example (Client_FileUpload) ¶
上传文件
cli := baiduyun.New( baiduyun.WithAppCredential("id", "secret"), baiduyun.WithToken("access-token", "refresh-token"), ) f, err := os.Open("/filepath/1.txt") if err != nil { fmt.Println("err", err) return } defer f.Close() print(cli.FileUpload(&baiduyun.FileUploadReq{ Name: "/1.txt", File: f, RType: nil, }))
Output:
Index ¶
- type Client
- func (r *Client) AuthAccessToken(code, redirectURI string) (*Token, error)
- func (r *Client) AuthRefreshToken(refreshToken string) (*Token, error)
- func (r *Client) AuthURL(redirectURI string) string
- func (r *Client) DownloadDLink(dlink string) (io.ReadCloser, error)
- func (r *Client) DownloadFileID(fileID int64) (io.ReadCloser, error)
- func (r *Client) FileDelete(req *FileDeleteReq) (int64, error)
- func (r *Client) FileList(req *FileListReq) ([]*FileInfo, error)
- func (r *Client) FileMetadata(req *FileMetadataReq) ([]*FileMeta, error)
- func (r *Client) FileRename(req *FileRenameReq) (int64, error)
- func (r *Client) FileSearch(req *FileSearchReq) (bool, []*FileInfo, error)
- func (r *Client) FileUpload(req *FileUploadReq) error
- func (r *Client) FileUploadSessionAppend(req *FileUploadSessionAppendReq) error
- func (r *Client) FileUploadSessionFinish(req *FileUploadSessionFinishReq) error
- func (r *Client) FileUploadSessionStart(req *FileUploadSessionStartReq) (*FileUploadSessionStartResp, error)
- func (r *Client) SetLogger(logger Logger)
- type FileDeleteReq
- type FileInfo
- type FileListReq
- type FileMeta
- type FileMetadataReq
- type FileRenameReq
- type FileRenameReqPath
- type FileSearchReq
- type FileUploadReq
- type FileUploadSessionAppendReq
- type FileUploadSessionFinishReq
- type FileUploadSessionStartReq
- type FileUploadSessionStartResp
- type Logger
- type Option
- type Token
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
func (*Client) AuthAccessToken ¶
AuthAccessToken OAuth 流程使用 code 换取 token
func (*Client) AuthRefreshToken ¶
func (*Client) DownloadDLink ¶
func (r *Client) DownloadDLink(dlink string) (io.ReadCloser, error)
func (*Client) DownloadFileID ¶
func (r *Client) DownloadFileID(fileID int64) (io.ReadCloser, error)
func (*Client) FileDelete ¶
func (r *Client) FileDelete(req *FileDeleteReq) (int64, error)
FileDelete 删除文件
func (*Client) FileList ¶
func (r *Client) FileList(req *FileListReq) ([]*FileInfo, error)
FileList 获取文件列表
func (*Client) FileMetadata ¶
func (r *Client) FileMetadata(req *FileMetadataReq) ([]*FileMeta, error)
FileMetadata 查询文件信息
func (*Client) FileRename ¶
func (r *Client) FileRename(req *FileRenameReq) (int64, error)
FileRename 重命名文件
func (*Client) FileSearch ¶
func (r *Client) FileSearch(req *FileSearchReq) (bool, []*FileInfo, error)
func (*Client) FileUpload ¶
func (r *Client) FileUpload(req *FileUploadReq) error
func (*Client) FileUploadSessionAppend ¶
func (r *Client) FileUploadSessionAppend(req *FileUploadSessionAppendReq) error
func (*Client) FileUploadSessionFinish ¶
func (r *Client) FileUploadSessionFinish(req *FileUploadSessionFinishReq) error
func (*Client) FileUploadSessionStart ¶
func (r *Client) FileUploadSessionStart(req *FileUploadSessionStartReq) (*FileUploadSessionStartResp, error)
type FileDeleteReq ¶
type FileInfo ¶
type FileInfo struct { FsID int64 `json:"fs_id"` // 文件在云端的唯一标识ID Path string `json:"path,omitempty"` // 文件的绝对路径 ServerFilename string `json:"server_filename,omitempty"` // 文件名称 Size int64 `json:"size,omitempty"` // 文件大小,单位B ServerMtime int64 `json:"server_mtime"` // 文件在服务器修改时间 ServerCtime int64 `json:"server_ctime,omitempty"` // 文件在服务器创建时间 LocalMtime int64 `json:"local_mtime,omitempty"` // 文件在客户端修改时间 LocalCtime int64 `json:"local_ctime,omitempty"` // 文件在客户端创建时间 IsDir int64 `json:"isdir,omitempty"` // 是否为目录,0 文件、1 目录 Privacy int64 `json:"privacy"` Category int64 `json:"category"` // 文件类型,1 视频、2 音频、3 图片、4 文档、5 应用、6 其他、7 种子 Md5 string `json:"md5,omitempty"` // 云端哈希(非文件真实MD5),只有是文件类型时,该字段才存在 DirEmpty int64 `json:"dir_empty,omitempty"` // 该目录是否存在子目录,只有请求参数web=1且该条目为目录时,该字段才存在, 0为存在, 1为不存在 }
type FileListReq ¶
type FileListReq struct { Dir *string `query:"dir"` // 以 / 开头的绝对路径, 默认为 /, 需要 url-encode 编码 Order *string `query:"order"` // 排序字段,默认为 name; time表示先按文件类型排序,后按修改时间排序; name表示先按文件类型排序,后按文件名称排序; size表示先按文件类型排序,后按文件大小排序。 Desc *int64 `query:"desc"` // 排序方式,默认为0,即升序;1表示降序, 排序的对象是当前目录下所有文件,不是当前分页下的文件) Start *int64 `query:"start"` // 分页开始位置,默认为0,表示从第一条记录开始 Limit *int64 `query:"limit"` // 分页大小,默认为1000,建议最大不超过1000 Web *int64 `query:"web"` // 值为1时,返回dir_empty属性和缩略图数据 Folder *int64 `query:"folder"` // 0 返回所有,1 只返回文件夹,且属性只返回path字段 ShowEmpty *int64 `query:"showempty"` // 0 不返回,1 返回dir_empty属性 }
type FileMeta ¶
type FileMeta struct { Category int64 `json:"category"` // 文件类型,含义如下:1 视频, 2 音乐,3 图片,4 文档,5 应用,6 其他,7 种子 DLink string `json:"dlink"` // 文件下载地址,参考下载文档进行下载操作 Filename string `json:"filename"` // 文件名 FsID int64 `json:"fs_id"` // id Isdir int64 `json:"isdir"` // 是否是目录,为1表示目录,为0表示非目录 Md5 string `json:"md5"` // md5 OperatorID int64 `json:"oper_id"` // 操作者id Path string `json:"path"` // 路径 ServerCtime int64 `json:"server_ctime"` // 文件的服务器创建Unix时间戳,单位秒 ServerMtime int64 `json:"server_mtime"` // 文件的服务器修改Unix时间戳,单位秒 Size int64 `json:"size"` // 文件大小,单位字节 Thumbs struct { Icon string `json:"icon,omitempty"` Url1 string `json:"url1,omitempty"` Url2 string `json:"url2,omitempty"` Url3 string `json:"url3,omitempty"` } `json:"thumbs"` DateTaken int64 `json:"date_taken,omitempty"` // 图片拍摄时间 Width int64 `json:"width,omitempty"` // 图片宽度 Height int64 `json:"height,omitempty"` // 图片高度 }
type FileMetadataReq ¶
type FileMetadataReq struct { FsIDs []int64 `query:"fsids"` // 是 [414244021542671,633507813519281] URL参数 文件id数组,数组中元素是uint64类型,数组大小上限是:100 DLink *int64 `query:"dlink"` // 否 0 URL参数 是否需要下载地址,0为否,1为是,默认为0。获取到dlink后,参考下载文档进行下载操作 Path *string `query:"path"` // 否 /123-571234 URL参数 查询共享目录或专属空间内文件时需要。; 共享目录格式: /uk-fsid; 其中uk为共享目录创建者id, fsid对应共享目录的fsid; 专属空间格式:/_pcs_.appdata/xpan/ Thumb *int64 `query:"thumb"` // 否 0 URL参数 是否需要缩略图地址,0为否,1为是,默认为0 Extra *int64 `query:"extra"` // 否 0 URL参数 图片是否需要拍摄时间、原图分辨率等其他信息,0 否、1 是,默认0 NeedMedia *int64 `query:"needmedia"` // 否 0 URL参数 视频是否需要展示时长信息,0 否、1 是,默认0 }
type FileRenameReq ¶
type FileRenameReq struct { Async int64 // 0 同步,1 自适应,2 异步 PathList []*FileRenameReqPath OnDuplicate *string // 遇到重复文件的处理策略: fail(默认,直接返回失败)、newcopy(重命名文件)、overwrite、skip }
type FileRenameReqPath ¶
type FileSearchReq ¶
type FileSearchReq struct { Key string `query:"key"` // 是 "day" URL参数 搜索关键字 Dir *string `query:"dir"` // 否 /测试目录 URL参数 搜索目录,默认根目录 Page *int64 `query:"page"` // 否 1 URL参数 页数,从1开始,缺省则返回所有条目 Num *int64 `query:"num"` // 否 100 URL参数 默认为500,不能修改 Recursion *int64 `query:"recursion"` // 否 1 URL参数 是否递归搜索子目录 1:是,0:否(默认) Web *int64 `query:"web"` // 否 0 URL参数 默认0,为1时返回缩略图信息 }
type FileUploadReq ¶
type FileUploadSessionAppendReq ¶
type FileUploadSessionAppendReq struct { Method string `query:"method"` // 本接口固定为precreate AccessToken string `query:"access_token"` Type string `query:"type"` // 固定值 tmpfile Path string `query:"path"` // 需要与上一个阶段预上传precreate接口中的path保持一致 UploadID string `query:"uploadid"` // 上一个阶段预上传precreate接口下发的uploadid PartSeq int64 `query:"partseq"` // 文件分片的位置序号,从0开始,参考上一个阶段预上传precreate接口返回的block_list File io.Reader `file:"file"` // 是 RequestBody参数 上传的文件内容 }
type FileUploadSessionFinishReq ¶
type FileUploadSessionFinishReq struct { Method string `query:"method"` // 本接口固定为precreate AccessToken string `query:"access_token"` Path string `json:"path"` // 上传后使用的文件绝对路径,需要urlencode,需要与预上传precreate接口中的path保持一致 File io.Reader `json:"-"` UploadID string `json:"uploadid"` // 预上传precreate接口下发的uploadid RType *int64 `json:"rtype"` // 0 为不重命名,返回冲突; 1 为只要path冲突即重命名; 2 为path冲突且block_list不同才重命名; 3 为覆盖,需要与预上传precreate接口中的rtype保持一致 }
type FileUploadSessionStartReq ¶
type FileUploadSessionStartReq struct { Method string `query:"method"` // 本接口固定为precreate AccessToken string `query:"access_token"` Path string `json:"path"` // 上传后使用的文件绝对路径,需要urlencode File io.Reader // Size int64 `json:"size"` // 文件和目录两种情况:上传文件时,表示文件的大小,单位B;上传目录时,表示目录的大小,目录的话大小默认为0 // IsDir int64 `json:"isdir"` // 是否为目录,0 文件,1 目录 // BlockList string `json:"block_list"` // 是 ["98d02a0f54781a93e354b1fc85caf488", "ca5273571daefb8ea01a42bfa5d02220"] RequestBody参数 文件各分片MD5数组的json串。block_list的含义如下,如果上传的文件小于4MB,其md5值(32位小写)即为block_list字符串数组的唯一元素;如果上传的文件大于4MB,需要将上传的文件按照4MB大小在本地切分成分片,不足4MB的分片自动成为最后一个分片,所有分片的md5值(32位小写)组成的字符串数组即为block_list。 // AutoInit int64 `json:"autoinit"` // 是 1 RequestBody参数 固定值1 RType *int64 `json:"rtype"` // 文件命名策略,默认为0。0 表示不进行重命名,若云端存在同名文件返回错误; 1 表示当path冲突时,进行重命名; 2 表示当path冲突且block_list不同时,进行重命名; 3 当云端存在同名文件时,对该文件进行覆盖 }
type FileUploadSessionStartResp ¶
type FileUploadSessionStartResp struct { Path string `json:"path"` UploadID string `json:"uploadid"` ReturnType int64 `json:"return_type"` // 1 文件在云端不存在,2 文件在云端已存在 BlockList []int64 `json:"block_list"` // 需要上传的分片序号列表,索引从0开始 // contains filtered or unexported fields }
func (*FileUploadSessionStartResp) Exist ¶
func (r *FileUploadSessionStartResp) Exist() bool
type Logger ¶
type Logger interface { Info(format string, args ...interface{}) Error(format string, args ...interface{}) }
func NewDefaultLogger ¶
func NewDefaultLogger() Logger
Source Files ¶
- auth_access_token.go
- auth_auth_url.go
- auth_refresh_token.go
- client.go
- err.go
- file_delete.go
- file_download_dlink.go
- file_download_file_id.go
- file_list.go
- file_metadata.go
- file_rename.go
- file_search.go
- file_upload.go
- file_upload_session_append.go
- file_upload_session_finish.go
- file_upload_session_start.go
- helper.go
- log.go
- option.go
- request.go
- version.go
Click to show internal directories.
Click to hide internal directories.