ossclient.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. package oss
  2. import (
  3. "fmt"
  4. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  5. "io/ioutil"
  6. util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  7. "os"
  8. "strconv"
  9. )
  10. var (
  11. ossEndpoint = "oss-cn-beijing-internal.aliyuncs.com" //正式环境用:oss-cn-beijing-internal.aliyuncs.com 测试:oss-cn-beijing.aliyuncs.com
  12. //ossEndpoint = "oss-cn-beijing.aliyuncs.com" //测试环境:oss-cn-beijing.aliyuncs.com
  13. ossAccessKeyId = "LTAI4G5x9aoZx8dDamQ7vfZi"
  14. ossAccessKeySecret = "Bk98FsbPYXcJe72n1bG3Ssf73acuNh"
  15. ossBucketName = "topjy"
  16. ossclient *oss.Client
  17. )
  18. func InitOss() {
  19. client, err := oss.New(ossEndpoint, ossAccessKeyId, ossAccessKeySecret)
  20. if err != nil {
  21. fmt.Println("Error:", err)
  22. os.Exit(-1)
  23. }
  24. ossclient = client
  25. }
  26. func OssGetObject(objectName, id string) string {
  27. util.Catch()
  28. // 获取存储空间。
  29. bucket, err := ossclient.Bucket(ossBucketName)
  30. if err != nil {
  31. return ""
  32. }
  33. // 下载文件到流。
  34. body, err := bucket.GetObject(objectName)
  35. if err != nil {
  36. //log.Info("OssGetObject", zap.String("key", objectName), zap.String("id", id))
  37. //log.Info("OssGetObject", zap.Error(err))
  38. return ""
  39. }
  40. defer body.Close()
  41. data, err := ioutil.ReadAll(body)
  42. if err != nil {
  43. fmt.Println("ReadAll", err)
  44. return ""
  45. }
  46. return string(data)
  47. }
  48. func OssObjExists(bname, fid string) bool {
  49. util.Catch()
  50. // 获取存储空间。
  51. bucket, err := ossclient.Bucket(bname)
  52. if err != nil {
  53. fmt.Println("Error:", err)
  54. }
  55. // 判断文件是否存在。
  56. isExist, err := bucket.IsObjectExist(fid)
  57. if err != nil {
  58. fmt.Println("Error:", err)
  59. }
  60. return isExist
  61. }
  62. // OssFileSize 获取文件大小
  63. func OssFileSize(name string) bool {
  64. util.Catch()
  65. // 获取存储空间。
  66. bucket, err := ossclient.Bucket(ossBucketName)
  67. if err != nil {
  68. fmt.Println("OssFileSize,Bucket err", err)
  69. }
  70. // 获取文件的元信息
  71. props, err := bucket.GetObjectDetailedMeta(name)
  72. if err != nil {
  73. fmt.Println("Error getting object metadata:", err)
  74. }
  75. // 提取文件大小信息
  76. fileSizeStr := props.Get("Content-Length")
  77. fmt.Printf("%T,%+v \n", fileSizeStr, fileSizeStr)
  78. // 将文件大小字符串解析为float64类型
  79. fileSize, err := parseFileSize(fileSizeStr)
  80. fmt.Println("fileSize", fileSize)
  81. if err != nil {
  82. fmt.Println("Error parsing file size,", err)
  83. }
  84. // 判断文件大小是否超过20兆
  85. if fileSize > 20*1024*1024 { // 将20兆转换为字节
  86. fmt.Println("文件大小超过20兆")
  87. return true
  88. } else {
  89. fmt.Println("文件大小未超过20兆")
  90. return false
  91. }
  92. }
  93. // 解析文件大小字符串,将其转换为 int 类型
  94. func parseFileSize(sizeStr string) (int, error) {
  95. fileSize, err := strconv.Atoi(sizeStr)
  96. if err != nil {
  97. return 0, err
  98. }
  99. return fileSize, nil
  100. }