创建软链接

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

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

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "strings"
  6. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  7. )
  8. func main() {
  9. // 创建OSSClient实例。
  10. client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
  11. if err != nil {
  12. fmt.Println("Error:", err)
  13. os.Exit(-1)
  14. }
  15. bucketName := "<yourBucketName>"
  16. // 软链接。
  17. objectName := "<yourSymlinkName>"
  18. // 软链接目标文件。
  19. targetObjectName := "<yourSymlinkTargetName>"
  20. // 获取存储空间。
  21. bucket, err := client.Bucket(bucketName)
  22. if err != nil {
  23. fmt.Println("Error:", err)
  24. os.Exit(-1)
  25. }
  26. // 创建软链接。
  27. err = bucket.PutSymlink(objectName, targetObjectName)
  28. if err != nil {
  29. fmt.Println("Error:", err)
  30. os.Exit(-1)
  31. }
  32. // 上传文件到软链接目标文件。
  33. err = bucket.PutObject(targetObjectName, strings.NewReader("target"))
  34. if err != nil {
  35. fmt.Println("Error:", err)
  36. os.Exit(-1)
  37. }
  38. err = bucket.PutSymlink(objectName, targetObjectName)
  39. if err != nil {
  40. fmt.Println("Error:", err)
  41. os.Exit(-1)
  42. }
  43. // 获取软链接指向的文件内容。
  44. meta, err := bucket.GetSymlink(objectName)
  45. if err != nil {
  46. fmt.Println("Error:", err)
  47. os.Exit(-1)
  48. }
  49. fmt.Println(meta.Get(oss.HTTPHeaderOssSymlinkTarget))
  50. }

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

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

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

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func main() {
  8. // 创建OSSClient实例。
  9. client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
  10. if err != nil {
  11. fmt.Println("Error:", err)
  12. os.Exit(-1)
  13. }
  14. bucketName := "<yourBucketName>"
  15. // 软链接名称。
  16. objectName := "<yourSymlinkObjectName>"
  17. // 获取存储空间。
  18. bucket, err := client.Bucket(bucketName)
  19. if err != nil {
  20. fmt.Println("Error:", err)
  21. os.Exit(-1)
  22. }
  23. // 获取软链接指向的文件内容。
  24. meta, err := bucket.GetSymlink(objectName)
  25. if err != nil {
  26. fmt.Println("Error:", err)
  27. os.Exit(-1)
  28. }
  29. fmt.Println(meta.Get(oss.HTTPHeaderOssSymlinkTarget))
  30. }

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