文件拷贝

SDK 提供Copy方法实现文件拷贝到当前Bucket的功能,完整代码参见Github

参数说明

参数名 类型 说明
dstKeyName string 拷贝到当前Bucket(即配置文件所配置bucket_name)后文件的KeyName
srcBucketName string 被拷贝文件所在的存储空间
srcKeyName string 被拷贝文件的KeyName

说明

  • 若当前Bucket已有key为dstKeyName的文件,则该操作会默认覆盖该文件,请谨慎操作。可先通过HeadFile进行判断。
  • 目前文件拷贝的srcBucketName可以是同一账号相同地域下不同子账号的任意Bucket

代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package main

import (
	ufsdk "github.com/ufilesdk-dev/ufile-gosdk"
	"log"
)

const (
	ConfigFile = "config.json"
	dstKeyName = ""
	srcBucketName = ""
	srcKeyName = ""
)

func main() {

	// 加载配置,创建请求
	config, err := ufsdk.LoadConfig(ConfigFile)
	if err != nil {
		panic(err.Error())
	}
	req, err := ufsdk.NewFileRequest(config, nil)
	if err != nil {
		panic(err.Error())
	}

	// 当前Bucket内拷贝,若成功则返回拷贝后文件的基本信息并保存在req.LastResponseHeader中
	err = req.Copy(dstKeyName, config.BucketName, srcKeyName)
	if err != nil {
		log.Fatalf("文件拷贝失败,错误信息为:%s", err.Error())

	}
	log.Println("文件拷贝成功,返回信息为:", req.LastResponseHeader)


	// 不同 bucket间拷贝,srcBucketName可以是同一账号相同地域下的任意Bucket
	err = req.Copy(dstKeyName, srcBucketName, srcKeyName)
	if err != nil {
		log.Fatalf("文件拷贝失败,错误信息为:%s", err.Error())
	}
	log.Println("文件拷贝成功,返回信息为:", req.LastResponseHeader)
}

错误码

HTTP 状态码 RetCode ErrMsg 描述
400 -148653 bucket not exists 当前所操作存储空间不存在 或 源存储空间不存在
400 -15036 check md5 failed MD5校验失败
401 -148643 no authorization found 上传凭证错误
403 -148643 invalid signature API公私钥错误或者KeyName包含%、#、?
404 -148654 file not exist 源文件不存在