代码拉取完成,页面将自动刷新
同步操作将从 ttpc2008/BaiduPCS-Go 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package baidupcs
import (
"fmt"
"github.com/json-iterator/go"
"net/http"
"net/http/cookiejar"
)
// UploadFunc 上传文件处理函数
type UploadFunc func(uploadURL string, jar *cookiejar.Jar) (resp *http.Response, err error)
// RapidUpload 秒传文件
func (pcs *BaiduPCS) RapidUpload(targetPath, contentMD5, sliceMD5, crc32 string, length int64) (pcsError Error) {
dataReadCloser, pcsError := pcs.PrepareRapidUpload(targetPath, contentMD5, sliceMD5, crc32, length)
if pcsError != nil {
return
}
defer dataReadCloser.Close()
errInfo := decodeJSONError(OperationUpload, dataReadCloser)
if errInfo == nil {
return nil
}
switch errInfo.ErrorCode() {
case 31079:
// file md5 not found, you should use upload api to upload the whole file.
}
return errInfo
}
// Upload 上传单个文件
func (pcs *BaiduPCS) Upload(targetPath string, uploadFunc UploadFunc) (pcsError Error) {
dataReadCloser, pcsError := pcs.PrepareUpload(targetPath, uploadFunc)
if pcsError != nil {
return
}
defer dataReadCloser.Close()
// 数据处理
jsonData := &struct {
*PathJSON
*ErrInfo
}{
ErrInfo: NewErrorInfo(OperationUpload),
}
d := jsoniter.NewDecoder(dataReadCloser)
err := d.Decode(jsonData)
if err != nil {
jsonData.ErrInfo.jsonError(err)
return jsonData.ErrInfo
}
if jsonData.ErrCode != 0 {
return jsonData.ErrInfo
}
if jsonData.Path == "" {
jsonData.ErrInfo.errType = ErrTypeInternalError
jsonData.ErrInfo.err = fmt.Errorf("unknown response data, file saved path not found")
return jsonData.ErrInfo
}
return nil
}
// UploadTmpFile 分片上传—文件分片及上传
func (pcs *BaiduPCS) UploadTmpFile(uploadFunc UploadFunc) (md5 string, pcsError Error) {
dataReadCloser, pcsError := pcs.PrepareUploadTmpFile(uploadFunc)
if pcsError != nil {
return "", pcsError
}
defer dataReadCloser.Close()
// 数据处理
jsonData := &struct {
MD5 string `json:"md5"`
*ErrInfo
}{
ErrInfo: NewErrorInfo(OperationUploadTmpFile),
}
d := jsoniter.NewDecoder(dataReadCloser)
err := d.Decode(jsonData)
if err != nil {
jsonData.ErrInfo.jsonError(err)
return "", jsonData.ErrInfo
}
if jsonData.ErrCode != 0 {
return "", jsonData.ErrInfo
}
// 未找到md5
if jsonData.MD5 == "" {
jsonData.ErrInfo.errType = ErrTypeInternalError
jsonData.ErrInfo.err = fmt.Errorf("unknown response data, md5 not found, error: %s", err)
return "", jsonData.ErrInfo
}
return jsonData.MD5, nil
}
// UploadCreateSuperFile 分片上传—合并分片文件
func (pcs *BaiduPCS) UploadCreateSuperFile(targetPath string, blockList ...string) (pcsError Error) {
dataReadCloser, pcsError := pcs.PrepareUploadCreateSuperFile(targetPath, blockList...)
if pcsError != nil {
return pcsError
}
defer dataReadCloser.Close()
errInfo := decodeJSONError(OperationUploadCreateSuperFile, dataReadCloser)
return errInfo
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。