创建软链接

软链接是一种特殊的文件,它指向某个具体的文件,类似于Windows上使用的快捷方式。软链接支持自定义元信息。

以下代码用于创建软链接:

package main

import (
	"fmt"
	"os"
	"strings"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// 创建OSSClient实例。
	client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	bucketName := "<yourBucketName>"
	// 软链接。
	objectName := "<yourSymlinkName>"
	// 软链接目标文件。
	targetObjectName := "<yourSymlinkTargetName>"

	// 获取存储空间。
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 创建软链接。
	err = bucket.PutSymlink(objectName, targetObjectName)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 上传文件到软链接目标文件。
	err = bucket.PutObject(targetObjectName, strings.NewReader("target"))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	err = bucket.PutSymlink(objectName, targetObjectName)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 获取软链接指向的文件内容。
	meta, err := bucket.GetSymlink(objectName)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	fmt.Println(meta.Get(oss.HTTPHeaderOssSymlinkTarget))
}

创建软链接的详细信息请参见PutSymlink

获取软链接指向的文件内容

获取软链接要求您对该软链接有读权限。以下代码用于获取软链接指向的文件内容:

package main

import (
	"fmt"
	"os"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// 创建OSSClient实例。
	client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	bucketName := "<yourBucketName>"
	// 软链接名称。
	objectName := "<yourSymlinkObjectName>"

	// 获取存储空间。
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 获取软链接指向的文件内容。
	meta, err := bucket.GetSymlink(objectName)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	fmt.Println(meta.Get(oss.HTTPHeaderOssSymlinkTarget))
}

获取软链接的详细信息请参见GetSymlink