文档中心 > 简单上传
简单上传

最近更新时间:2021-09-22

本文介绍如何使用简单上传。


上传字符串和文件

以下代码用于上传字符串:

package sample
import (
"fmt"
"github.com/journeymidnight/Yig-S3-SDK-Go/s3lib"
"os"
"strings"
)
func PutObjectSample() {
DeleteTestBucketAndObject()
defer DeleteTestBucketAndObject()
sc := s3lib.NewS3(endpoint, accessKey, secretKey)
// Create a bucket
err := sc.MakeBucket(bucketName)
if err != nil {
HandleError(err)
}
// 1. Put a string object
err = sc.PutObject(bucketName, objectKey, strings.NewReader("NewBucketAndObjectSample"))
if err != nil {
HandleError(err)
}
err = sc.DeleteObject(bucketName, objectKey)
if err != nil {
HandleError(err)
}
// 2. Put a file
f, err := os.Open(localFilePath)
defer f.Close()
if err != nil {
HandleError(err)
}
err = sc.PutObject(bucketName, objectKey, f)
if err != nil {
HandleError(err)
}
out, err := sc.GetObject(bucketName, objectKey)
if err != nil {
HandleError(err)
}
out.Close()
fmt.Printf("NewObjectSample Run Success !\n\n")
}


禁止覆盖同名上传

对象存储在默认情况上当上传同名文件时,会自动覆盖原有文件,且不可找回。在请求中设置x-oss-forbid-overwrite请求头,可以实现在上传或复制过程中遇到同名文件返回报错。但设置改参数会导致性能处理能力下降(单账户下对带宽、TPS、QPS等参数进行了限制),若在操作中需要大量使用该参数,请根据实际情况通过工单申请更大的性能支持。

package sample

import (
"fmt"
"github.com/journeymidnight/Yig-S3-SDK-Go/s3lib"
"os"
"strings"
)
func PutObjectWithForbidOverwrite() {
DeleteTestBucketAndObject()
defer DeleteTestBucketAndObject()
sc := s3lib.NewS3(endpoint, accessKey, secretKey)
// Create a bucket
err := sc.MakeBucket(bucketName)
if err != nil {
HandleError(err)
}
err = sc.PutObject(bucketName, objectKey, strings.NewReader("NewBucketAndObjectSample"))
if err != nil {
HandleError(err)
}
out, err := sc.GetObject(bucketName, objectKey)
if err != nil {
HandleError(err)
}
b, _ := ioutil.ReadAll(out)
fmt.Println(string(b))
//set forbid overwrite
_, err = sc.PutObjectWithForbidOverwrite(bucketName, objectKey, strings.NewReader("OverwriteValue"), true)
if err == nil {
HandleError(err)
}
out, err = sc.GetObject(bucketName, objectKey)
if err != nil {
HandleError(err)
}
b, _ = ioutil.ReadAll(out)
fmt.Println(string(b))
_, err = sc.PutObjectWithForbidOverwrite(bucketName, objectKey, strings.NewReader("OverwriteValue"), false)
if err != nil {
HandleError(err)
}
out, err = sc.GetObject(bucketName, objectKey)
if err != nil {
HandleError(err)
}
b, _ = ioutil.ReadAll(out)
fmt.Println(string(b))
out.Close()
fmt.Printf("NewObjectSample Run Success !\n\n")
}