最近更新时间:2023-04-06 10:13:48
以下代码用于上传文件:
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: true,
Logger: nil, //打日志的位置
})
//上传文件
func putObject(svc *s3.S3) {
filename = "/Users/user/Downloads/aaa.docx"
file, err := ioutil.ReadFile(filename)
if err != nil {
fmt.Println("Failed to open file", err)
os.Exit(1)
}
params := &s3.PutObjectInput{
Bucket: aws.String(BucketName), // bucket名称
Key: aws.String("go-demo/test"), // object key
ACL: aws.String("public-read"), //权限,支持private(私有),public-read(公开读)
Body: bytes.NewReader(file), //要上传的内容
ContentType: aws.String("application/octet-stream"), //设置content-type
Metadata: map[string]*string{
//"Key": aws.String("MetadataValue"), // 设置用户元数据
// More values...
},
}
resp, err := client.PutObject(params)
if err != nil {
panic(err)
}
fmt.Println(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: true,
Logger: nil, //打日志的位置
})
//上传加密
//服务器端加密关乎静态数据加密,即 KS3 在将您的数据写入数据中心内的磁盘时会在对象级别上加密这些数据,并在您访问这些数据时为您解密这些数据。
//只要您验证了您的请求并且拥有访问权限,您访问加密和未加密数据元的方式就没有区别。
//例如,如果您使用预签名的 URL 来共享您的对象,那么对于加密和解密对象,该 URL 的工作方式是相同的。
func TestPutObjectWithSSEC(svc *s3.S3) {
resp, _ := svc.PutObject(&s3.PutObjectInput{
Bucket: aws.String(bucket),
Key: aws.String(key),
SSECustomerAlgorithm: aws.String("AES256"), //加密类型
SSECustomerKey: aws.String("12345678901234567890123456789012"),
})
fmt.Println("结果:\n", awsutil.StringValue(resp))
}
文档内容是否对您有帮助?
评价建议不能为空
非常感谢您的反馈,我们会继续努力做到更好!