我想將文件從一個文件夾復制到同一個 S3 存儲桶上的另一個文件夾。執(zhí)行此操作時出現(xiàn)錯誤,NoSuchKey: The specified key does not exist我的代碼如下所示。sess, err := session.NewSession(&aws.Config{Region: aws.String("ap-south-1")})if err != nil { return nil, err}Oldpath := "folder1/folder2/a+b.pdf"newBaseFolder := "folder3"svc := s3.New(sess)bucketName := "mybucket.test"source := bucketName + "/" + oldPath // Oldpath = "folder1/folder2/a+b.pdf" //newBaseFolder = "folder3"newPath := newBaseFolder + "/" + strings.SplitN(oldPath, "/", 2)[1] //newPath = "folder3/folder2/a+b.pdf" _, err = svc.CopyObject(&s3.CopyObjectInput{ Bucket: aws.String(bucketName), // bucketName = "mybucket.test" CopySource: aws.String(url.PathEscape(source)), Key: aws.String(newPath)})if err != nil { return nil, err }錯誤信息{"err": "NoSuchKey: The specified key does not exist.""status code": 404}
2 回答
海綿寶寶撒
TA貢獻1809條經(jīng)驗 獲得超8個贊
使用url.QueryEscape而不是 url.PathEscapeasurl.QueryEscape可以編碼特殊字符,例如無法編碼+的字符url.PathEscape(這種技術(shù)對我有用)。
...
_, err := svc.CopyObject(
&s3.CopyObjectInput{
Bucket: aws.String("document.as.a.service.test"),
CopySource: aws.String(url.QueryEscape(source)),
Key: aws.String(newPath),
},
)
...
有時如果copySource沒有正確編碼錯誤可以顯示為NoSuchKey: The specified key does not exist
為避免混淆,Go-AWS-SDKcopyObject函數(shù)copySource將是現(xiàn)有文件的路徑,并且Key 是您希望復制文件的新路徑或目標。
- 2 回答
- 0 關(guān)注
- 1518 瀏覽
添加回答
舉報
0/150
提交
取消
