aws_s3.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package services
  2. import (
  3. "bytes"
  4. "eta/eta_api/utils"
  5. "fmt"
  6. "github.com/aws/aws-sdk-go/aws"
  7. "github.com/aws/aws-sdk-go/aws/credentials"
  8. "github.com/aws/aws-sdk-go/aws/session"
  9. "github.com/aws/aws-sdk-go/service/s3"
  10. "io/ioutil"
  11. )
  12. func Upload2S3(fileName, filePath string) (resourceUrl string, err error) {
  13. defer func() {
  14. if err != nil {
  15. fmt.Println(err.Error())
  16. }
  17. }()
  18. // 替换为你的阿里云OSS Endpoint、access_key和access_key_secret
  19. endpoint := utils.Endpoint
  20. accessKey := utils.AccessKeyId
  21. secretKey := utils.AccessKeySecret
  22. // 创建AWS会话
  23. sess, e := session.NewSession(&aws.Config{
  24. Region: aws.String("oss-cn-shanghai"), // 替换为MinIO的region
  25. Credentials: credentials.NewStaticCredentials(accessKey, secretKey, ""),
  26. Endpoint: aws.String(endpoint),
  27. S3ForcePathStyle: aws.Bool(false),
  28. })
  29. if e != nil {
  30. err = fmt.Errorf("new session err: %s", e.Error())
  31. return
  32. }
  33. // 创建S3服务客户端
  34. client := s3.New(sess)
  35. // 替换为你的S3桶名和文件路径
  36. bucketName := utils.Bucketname
  37. //filePath := "/path/to/your/file.txt"
  38. // 读取文件内容
  39. fileContent, e := ioutil.ReadFile(filePath)
  40. if e != nil {
  41. err = fmt.Errorf("read file err: %s", e.Error())
  42. return
  43. }
  44. path := utils.UploadDir + "test/"
  45. path += fileName
  46. // 将文件内容上传到MinIO
  47. _, e = client.PutObject(&s3.PutObjectInput{
  48. Bucket: aws.String(bucketName),
  49. Key: aws.String(path),
  50. Body: bytes.NewReader(fileContent),
  51. })
  52. if e != nil {
  53. err = fmt.Errorf("put object err: %s", e.Error())
  54. return
  55. }
  56. resourceUrl = utils.Imghost + path
  57. fmt.Println(resourceUrl)
  58. return
  59. }