aws s3上传文件

go get github.com/aws/aws-sdk-go

package main

import (
	"bytes"
	"fmt"
	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/credentials"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/s3"
	"io/ioutil"
	"log"
	"net/http"
	"os"
)

func Read(filepath string) []byte {
	f, err := os.Open(filepath)
	if err != nil {
		log.Println("read file fail", err)
		return nil
	}
	defer f.Close()
	fd, err := ioutil.ReadAll(f)
	if err != nil {
		log.Println("read to fd fail", err)
		return nil
	}

	return fd
}

func UploadFileToS3(s *session.Session, raw []byte, filename string) (string, error) {

	tempFileName := "cards/" + filename

	_, err := s3.New(s).PutObject(&s3.PutObjectInput{
		Bucket:      aws.String("bucket名称"), // bucket名称
		Key:         aws.String(tempFileName),
		Body:        bytes.NewReader(raw),
		ContentType: aws.String(http.DetectContentType(raw)),
	})
	if err != nil {
		log.Println("PUT err", err)
		return "", err
	}
	fileUrl := "https://bucket名称.s3.ap-east-1.amazonaws.com/" + tempFileName

	return fileUrl, err
}

func main() {
	s, err := session.NewSession(&aws.Config{
		Region: aws.String("ap-east-1"), // 替换自己账户的region
		Credentials: credentials.NewStaticCredentials(
			"AccessKeyID",                    
			"SecretAccessKey",       
			"SessionToken"), // Sessiontoken是进程相关,应该是连接中可以返回 (可为空)
	})
	if err != nil {
		log.Println("aws  failed", err)
	}
	for i := 0; i < 10000; i++ {
		f1 := fmt.Sprintf("green_%d.gif", i)
		res := Read("./green/" + f1)
		fileName, err1 := UploadFileToS3(s, res, f1)
		if err1 != nil {
			//log.Println("Upload failed ", err1)
		} else {
			log.Println("upload success ", fileName)
		}
	}
}

AccessKeyID SecretAccessKey: 在账户(或IAM中建个用户)的security_credentials中申请

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值