"github.com/volcengine/ve-tos-golang-sdk/v2/tos"
"github.com/volcengine/ve-tos-golang-sdk/v2/tos/enum"
type eventChange struct {
func (e eventChange) EventChange(event *tos.UploadEvent) {
case enum.UploadEventCreateMultipartUploadSucceed:
fmt.Printf("Upload to %s %s create multipart upload success, upload id:%s\n", event.Bucket, event.Key, event.UploadID)
case enum.UploadEventCreateMultipartUploadFailed:
fmt.Printf("Upload to %s %s create multipart upload fail, err:%v\n", event.Bucket, event.Key, event.Err)
case enum.UploadEventUploadPartSucceed:
fmt.Printf("Upload to %s %s part success, UploadPartInfo:%v\n", event.Bucket, event.Key, event.UploadPartInfo)
case enum.UploadEventUploadPartAborted:
fmt.Printf("Upload to %s %s part aborted, upload id:%s\n", event.Bucket, event.Key, event.UploadID)
case enum.UploadEventUploadPartFailed:
fmt.Printf("Upload to %s %s part fail, upload id:%s, err:%v\n", event.Bucket, event.Key, event.UploadID, event.Err)
case enum.UploadEventCompleteMultipartUploadSucceed:
fmt.Printf("Upload to %s %s success, upload id:%s\n", event.Bucket, event.Key, event.UploadID)
case enum.UploadEventCompleteMultipartUploadFailed:
fmt.Printf("Upload to %s %s fail, upload id:%s, err:%v\n", event.Bucket, event.Key, event.UploadID, event.Err)
func checkErr(err error) {
if serverErr, ok := err.(*tos.TosServerError); ok {
fmt.Println("Error:", serverErr.Error())
fmt.Println("Request ID:", serverErr.RequestID)
fmt.Println("Response Status Code:", serverErr.StatusCode)
fmt.Println("Response Header:", serverErr.Header)
fmt.Println("Response Err Code:", serverErr.Code)
fmt.Println("Response Err Msg:", serverErr.Message)
} else if clientErr, ok := err.(*tos.TosClientError); ok {
fmt.Println("Error:", clientErr.Error())
fmt.Println("Client Cause Err:", clientErr.Cause.Error())
fmt.Println("Error:", err)
accessKey = os.Getenv("TOS_ACCESS_KEY")
secretKey = os.Getenv("TOS_SECRET_KEY")
endpoint = "https://tos-cn-beijing.volces.com"
bucketName = "*** Provide your bucket name ***"
objectKey = "example_dir/example.txt"
ctx = context.Background()
fileName = "/usr/local/testfile.txt"
client, err := tos.NewClientV2(endpoint, tos.WithRegion(region), tos.WithCredentials(tos.NewStaticCredentials(accessKey, secretKey)))
output, err := client.UploadFile(ctx, &tos.UploadFileInput{
CreateMultipartUploadV2Input: tos.CreateMultipartUploadV2Input{
PartSize: tos.DefaultPartSize,
UploadEventListener: eventChange{},
fmt.Println("PutObjectV2 Request ID:", output.RequestID)