快速入门

最近更新时间:2022-07-01 11:13:35

查看PDF

创建存储空间

以下代码用于创建存储空间:

package bucket_sample

import (
	"fmt"
	"github.com/ks3sdklib/aws-sdk-go/aws"
	"github.com/ks3sdklib/aws-sdk-go/aws/awsutil"
	"github.com/ks3sdklib/aws-sdk-go/aws/credentials"
	"github.com/ks3sdklib/aws-sdk-go/service/s3"
)

var bucket = string("yourbucket")
var key = string("yourkey")
var key_encode = string("yourkey")
var key_copy = string("yourkey")
var content = string("content")

// 金山云主账号 AccessKey 拥有所有API的访问权限,风险很高。
// 强烈建议您创建并使用子账号账号进行 API 访问或日常运维,请登录 https://uc.console.ksyun.com/pro/iam/#/user/list 创建子账号。
// 通过指定 host(Endpoint),您可以在指定的地域创建新的存储空间。
var cre = credentials.NewStaticCredentials("ak", "sk", "") //online
var svc = s3.New(&aws.Config{
	Region:      "BEIJING",
	Credentials: cre,
	//Endpoint:"ks3-sgp.ksyun.com",
	Endpoint:         "ks3-cn-beijing.ksyuncs.com",
	DisableSSL:       true,
	LogLevel:         1,
	S3ForcePathStyle: false,
	LogHTTPBody:      true,
})

//创建bucket并关联项目
func TestCreateBucket(svc *s3.S3) {
	resp, _ := svc.CreateBucket(&s3.CreateBucketInput{
		ACL:       aws.String("public-read"),
		Bucket:    aws.String(bucket),
		ProjectId: aws.String("1232"), //项目ID
	})
	fmt.Println("结果:\n", awsutil.StringValue(resp))
}

存储空间的命名规范请参见存储空间(Bucket)

您可以在创建存储空间时指定存储空间的权限存储类型

上传对象

以下代码用于上传文件:

package ks3test

import (
	"bufio"
	"bytes"
	"github.com/ks3sdklib/aws-sdk-go/aws/awserr"
	"github.com/ks3sdklib/aws-sdk-go/aws/awsutil"
	"net/url"
	"strconv"
	"strings"
	"testing"
	"time"
	//	"io"
	"fmt"
	"github.com/ks3sdklib/aws-sdk-go/aws"
	"github.com/ks3sdklib/aws-sdk-go/aws/credentials"
	"github.com/ks3sdklib/aws-sdk-go/service/s3"
	"net/http"
	"os"
)

var bucket = string("yourbucket")
var key = string("yourkey")
var key_encode = string("yourkey")
var key_copy = string("yourkey")
var content = string("content")
var prefix = "test/" //目录名称

// 金山云主账号 AccessKey 拥有所有API的访问权限,风险很高。
// 强烈建议您创建并使用子账号账号进行 API 访问或日常运维,请登录 https://uc.console.ksyun.com/pro/iam/#/user/list 创建子账号。
// 通过指定 host(Endpoint),您可以在指定的地域创建新的存储空间。
var cre = credentials.NewStaticCredentials("ak", "sk", "") //online
var svc = s3.New(&aws.Config{
	//Region 可参考 [https://docs.ksyun.com/documents/6761](https://docs.ksyun.com/documents/6761)
	Region:      "BEIJING",
	Credentials: cre,
	//Endpoint 可参考 [https://docs.ksyun.com/documents/6761](https://docs.ksyun.com/documents/6761)
	Endpoint:         "ks3-cn-beijing.ksyuncs.com",
	DisableSSL:       true, //是否禁用https
	LogLevel:         1,    //是否开启日志,0为关闭日志,1为开启日志
	LogHTTPBody:      true, //是否把HTTP请求body打入日志
	S3ForcePathStyle: false,
	Logger:           nil, //打日志的位置
})

//上传文件
func putObj(svc *s3.S3) {

	//获取本地文件FD
	fd, _ := os.Open("D:\\suiyi.jpg")

	//指定目标Object对象标签,可同时设置多个标签,如:TagA=A&TagB=B。
	//说明 Key和Value需要先进行URL编码,如果某项没有“=”,则看作Value为空字符串。详情请见对象标签([https://docs.ksyun.com/documents/39576](https://docs.ksyun.com/documents/39576))。
	v := url.Values{}
	v.Add("name", "yz")
	v.Add("age", "11")
	XAmzTagging := v.Encode()

	input := s3.PutObjectInput{
		Bucket:      aws.String(bucket),
		Key:         aws.String(key),
		ACL:         aws.String("public-read"),
		Body:        fd,
		XAmzTagging: aws.String(XAmzTagging),
	}
	resp, _ := svc.PutObject(&input)
	fmt.Println("结果:\n", awsutil.StringValue(resp))
}

上传文件的更多信息,请参见 PUT Object

列举对象

以下代码用于列举文件:

package ks3test

import (
	"bufio"
	"bytes"
	"github.com/ks3sdklib/aws-sdk-go/aws/awserr"
	"github.com/ks3sdklib/aws-sdk-go/aws/awsutil"
	"net/url"
	"strconv"
	"strings"
	"testing"
	"time"
	//	"io"
	"fmt"
	"github.com/ks3sdklib/aws-sdk-go/aws"
	"github.com/ks3sdklib/aws-sdk-go/aws/credentials"
	"github.com/ks3sdklib/aws-sdk-go/service/s3"
	"net/http"
	"os"
)

var bucket = string("yourbucket")
var key = string("yourkey")
var key_encode = string("yourkey")
var key_copy = string("yourkey")
var content = string("content")
var prefix = "test/" //目录名称

// 金山云主账号 AccessKey 拥有所有API的访问权限,风险很高。
// 强烈建议您创建并使用子账号账号进行 API 访问或日常运维,请登录 https://uc.console.ksyun.com/pro/iam/#/user/list 创建子账号。
// 通过指定 host(Endpoint),您可以在指定的地域创建新的存储空间。
var cre = credentials.NewStaticCredentials("ak", "sk", "") //online
var svc = s3.New(&aws.Config{
	//Region 可参考 [https://docs.ksyun.com/documents/6761](https://docs.ksyun.com/documents/6761)
	Region:      "BEIJING",
	Credentials: cre,
	//Endpoint 可参考 [https://docs.ksyun.com/documents/6761](https://docs.ksyun.com/documents/6761)
	Endpoint:         "ks3-cn-beijing.ksyuncs.com",
	DisableSSL:       true, //是否禁用https
	LogLevel:         1,    //是否开启日志,0为关闭日志,1为开启日志
	LogHTTPBody:      true, //是否把HTTP请求body打入日志
	S3ForcePathStyle: false,
	Logger:           nil, //打日志的位置
})

//列表bucket下对象
func TestListObjects(t *testing.T) {

	objects1, _ := svc.ListObjects(&s3.ListObjectsInput{
		Bucket:    aws.String(bucket),
		Delimiter: aws.String("/"),     //分隔符,用于对一组参数进行分割的字符
		MaxKeys:   aws.Long(int64(30)), //设置响应体中返回的最大记录数(最后实际返回可能小于该值)。默认为1000。如果你想要的结果在1000条以后,你可以设定 marker 的值来调整起始位置。
		Prefix:    aws.String(prefix),  //限定响应结果列表使用的前缀,正如你在电脑中使用的文件夹一样。
		Marker:    aws.String(""),      //指定列举指定空间中对象的起始位置。KS3按照字母排序方式返回结果,将从给定的 marker 开始返回列表。
	})
	//获取对象列表
	objectList := objects1.Contents
	for i := 0; i < len(objectList); i++ {
		object := objectList[i]
		println(*object.Key)
	}
}

列举文件的更多详情,请参见 GetBucket (ListObjects)

删除对象

以下代码用于删除文件

package ks3test

import (
	"bufio"
	"bytes"
	"github.com/ks3sdklib/aws-sdk-go/aws/awserr"
	"github.com/ks3sdklib/aws-sdk-go/aws/awsutil"
	"net/url"
	"strconv"
	"strings"
	"testing"
	"time"
	//	"io"
	"fmt"
	"github.com/ks3sdklib/aws-sdk-go/aws"
	"github.com/ks3sdklib/aws-sdk-go/aws/credentials"
	"github.com/ks3sdklib/aws-sdk-go/service/s3"
	"net/http"
	"os"
)

var bucket = string("yourbucket")
var key = string("yourkey")
var key_encode = string("yourkey")
var key_copy = string("yourkey")
var content = string("content")
var prefix = "test/" //目录名称

// 金山云主账号 AccessKey 拥有所有API的访问权限,风险很高。
// 强烈建议您创建并使用子账号账号进行 API 访问或日常运维,请登录 https://uc.console.ksyun.com/pro/iam/#/user/list 创建子账号。
// 通过指定 host(Endpoint),您可以在指定的地域创建新的存储空间。
var cre = credentials.NewStaticCredentials("ak", "sk", "") //online
var svc = s3.New(&aws.Config{
	//Region 可参考 [https://docs.ksyun.com/documents/6761](https://docs.ksyun.com/documents/6761)
	Region:      "BEIJING",
	Credentials: cre,
	//Endpoint 可参考 [https://docs.ksyun.com/documents/6761](https://docs.ksyun.com/documents/6761)
	Endpoint:         "ks3-cn-beijing.ksyuncs.com",
	DisableSSL:       true, //是否禁用https
	LogLevel:         1,    //是否开启日志,0为关闭日志,1为开启日志
	LogHTTPBody:      true, //是否把HTTP请求body打入日志
	S3ForcePathStyle: false,
	Logger:           nil, //打日志的位置
})


//删除对象
func TestDelObject(svc *s3.S3) {

	resp, _ := svc.DeleteObject(&s3.DeleteObjectInput{
		Bucket: aws.String(bucket),
		Key:    aws.String(key),
	})
	fmt.Println("结果:\n", awsutil.StringValue(resp))
}

文档内容是否对您有帮助?

根本没帮助
文档较差
文档一般
文档不错
文档很好

在文档使用中是否遇到以下问题

内容不全,不深入
内容更新不及时
描述不清晰,比较混乱
系统或功能太复杂,缺乏足够的引导
内容冗长

更多建议

0/200

评价建议不能为空

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

问题反馈