文档

Go重命名文件

更新时间:

OSS不支持直接对文件(Object)进行重命名。如果您需要在同一个Bucket内对Object进行重命名,您可以通过CopyObject接口将源Object拷贝至目标Object,然后通过DeleteObject接口删除源Object。

注意事项

  • 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见访问域名和数据中心

  • 本文以从环境变量读取访问凭证为例。如何配置访问凭证,请参见配置访问凭证

  • 本文以OSS域名新建OSSClient为例。如果您希望通过自定义域名、STS等方式新建OSSClient,请参见初始化

示例代码

以下代码用于将examplebucket下的srcobject.txt重命名为destobject.txt。

package main

import (
    "fmt"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "os"
)
func handleError(err error) {
    fmt.Println("Error:", err)
    os.Exit(-1)
}
func main()  {
    /// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 创建OSSClient实例。
    // yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        handleError(err)
    }
    // 填写Bucket名称。
    bucket, err := client.Bucket("examplebucket")
    if err != nil {
        handleError(err)
    }
    // 填写源Object的完整路径,完整路径中不能包含Bucket名称。
    srcObject := "srcobject.txt"
    // 填写目标Object的完整路径,完整路径中不能包含Bucket名称。
    destObject := "destobject.txt"
    // 将examplebucket下的srcobject.txt拷贝至同一Bucket下的destobject.txt。
    _,err = bucket.CopyObject(srcObject,destObject)
    if err != nil {
        handleError(err)
    }
    // 删除srcobject.txt。
    err = bucket.DeleteObject(srcObject)
    if err != nil {
        handleError(err)
    }

    fmt.Print(srcObject+" has renamed "+destObject)
}

相关文档

关于重命名文件涉及的API接口说明,请分别参见CopyObjectDeleteObject