3. 快速入门

请确认您已经熟悉NOS的基本概念,如Bucket、Object、EndPoint、AccessKeyId和AccessKeySecret等。 本节您将看到如何快速的使用AWS GOLANG SDK,完成常用的操作,上传文件、下载文件等。

3.1. 常用包

常用类型 备注
s3.S3 包含了主要的对象操作API

3.2. 基本操作

3.2.1. 上传文件

对象(Object)是NOS中最基本的数据单元,您可以把它简单的理解为文件,以下代码可以实现简单的对象上传:

//content传入文件content的ReadSeeker即可
func putObjectByFile(s3Cleint *s3.S3,bucketName ,objectName string,content io.ReadSeeker){
    putObjectInput := &s3.PutObjectInput{
        Bucket:aws.String(bucketName),
        Key:aws.String(objectName),
        Body:content,
    }
    _,err := s3Cleint.PutObject(putObjectInput)

    if err != nil {
        fmt.Println("putObject : ",err.Error())
    } else {
        fmt.Println("upload file ok")
    }
}
//使用示例
bts,err := ioutil.ReadFile("src/objecttest/main")
if err != nil {
    fmt.Println("read file error : ",err.Error())
    return;
}
putObjectByFile(getS3Client(),bucketName,objectName,bytes.NewReader(bts))

Attention

对象命名规则请参见 API 手册 对象

更多的上传文件信息,请参见 S3-GOLANG-SDK 上传文件

3.2.2. 下载文件

上传对象成功之后,您可以读取它的内容,以下代码可以实现文件的下载:

params := &s3.GetObjectInput{Bucket:aws.String(bucketName),Key:aws.String(objectName)}
resp,err := getS3Client().GetObject(params)

更多的下载文件信息,请参见 S3-GOLANG-SDK 下载文件

3.2.3. 列举文件

当上传文件成功之后,可以查看桶中包含的文件列表,以下代码展示如何列举桶内的文件:

resp,err := s3Client.ListObjects(&s3.ListObjectsInput{Bucket:aws.String(SrcBucket),
    Prefix:aws.String(prefix),Delimiter:aws.String(delimiter),Marker:aws.String(marker)})
    if err != nil {
            fmt.Println(err.Error())
            return
    } else {
            for _,value := range resp.Contents {
                    fmt.Println(*value.Key)
            }
    }

Note

上面的代码默认列举100个object

更多的管理文件信息,请参见 S3-GOLANG-SDK 文件管理

3.2.4. 删除文件

文件上传成功后,可以指定删除桶中的文件,以下代码实现桶中文件的删除:

func deleteObject(s3Client *s3.S3,bucketName,objectName string)  {
    resp,err := s3Client.DeleteObject(&s3.DeleteObjectInput{Bucket:aws.String(bucketName),Key:aws.String(objectName)})
    if err != nil {
        fmt.Println(err.Error())
        return
    } else {
        fmt.Println(resp)
    }
}