Skip to content

Go语言上传文件至OSS

思核云OSS兼容Amazon S3,通过支持S3的SDK即可访问OSS。

使用OSS需要配置AccessKey,在思核云控制台点击头像→AccessKey管理→创建AccessKey,保存AccessKey。为了安全起见,您可以将这些凭据存储在您的环境变量中,或使用其他方式来管理这些凭据以防止它们被泄漏。

在使用OSS之前,需要在您的项目中安装AWS SDK for Go,可以通过以下命令安装。

go get -u github.com/aws/aws-sdk-go/aws

安装完成后,我们可以使用AWS SDK for Go对OSS进行操作,以下是示例代码。

go
package main

import (
	"bytes"
	"fmt"
	"os"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/credentials"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/s3/s3manager"
)

func handleError(err error) {
	fmt.Println("Error:", err)
	os.Exit(-1)
}

func main() {
	// yourAccessKeyID填写AccessKey ID
	accessKeyID := "yourAccessKeyID"
	// yourAccessKeySecret填写AccessKey Secret
	accessKeySecret := "yourAccessKeySecret"
	// yourBucketName填写Bucket名称。
	bucketName := "yourBucketName"

	region := "jiaxing"
	endpoint := "https://oss-jiaxing.sihe.cloud"
	objectName := "sample.txt"

	// 创建会话。
	sess := session.Must(session.NewSession(&aws.Config{
		Credentials: credentials.NewStaticCredentials(accessKeyID, accessKeySecret, ""),
		Endpoint:    aws.String(endpoint),
		Region:      aws.String(region),
	}))

	// 上传文件到OSS。
	uploader := s3manager.NewUploader(sess)
	_, err := uploader.Upload(&s3manager.UploadInput{
		Bucket: aws.String(bucketName),
		Key:    aws.String(objectName),
		Body:   bytes.NewBuffer([]byte("sample text")),
	})
	if err != nil {
		handleError(err)
	}

	fmt.Printf("Successfully uploaded to %s/%s, you can check it from https://%s.oss-jiaxing.sihe.cloud/%s.\n", bucketName, objectName, bucketName, objectName)
}
package main

import (
	"bytes"
	"fmt"
	"os"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/credentials"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/s3/s3manager"
)

func handleError(err error) {
	fmt.Println("Error:", err)
	os.Exit(-1)
}

func main() {
	// yourAccessKeyID填写AccessKey ID
	accessKeyID := "yourAccessKeyID"
	// yourAccessKeySecret填写AccessKey Secret
	accessKeySecret := "yourAccessKeySecret"
	// yourBucketName填写Bucket名称。
	bucketName := "yourBucketName"

	region := "jiaxing"
	endpoint := "https://oss-jiaxing.sihe.cloud"
	objectName := "sample.txt"

	// 创建会话。
	sess := session.Must(session.NewSession(&aws.Config{
		Credentials: credentials.NewStaticCredentials(accessKeyID, accessKeySecret, ""),
		Endpoint:    aws.String(endpoint),
		Region:      aws.String(region),
	}))

	// 上传文件到OSS。
	uploader := s3manager.NewUploader(sess)
	_, err := uploader.Upload(&s3manager.UploadInput{
		Bucket: aws.String(bucketName),
		Key:    aws.String(objectName),
		Body:   bytes.NewBuffer([]byte("sample text")),
	})
	if err != nil {
		handleError(err)
	}

	fmt.Printf("Successfully uploaded to %s/%s, you can check it from https://%s.oss-jiaxing.sihe.cloud/%s.\n", bucketName, objectName, bucketName, objectName)
}