Appearance
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)
}