oss.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package entity
  2. import (
  3. "crypto/sha256"
  4. "fmt"
  5. "io"
  6. "os"
  7. "app.yhyue.com/moapp/jybase/common"
  8. "github.com/zeromicro/go-zero/core/logx"
  9. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  10. )
  11. var Ossclient *oss.Client
  12. func OssInit(ossEndpoint, ossAccessKeyID, ossAccessKeySecret string) {
  13. client, err := oss.New(ossEndpoint, ossAccessKeyID, ossAccessKeySecret)
  14. if err != nil {
  15. logx.Error("Error:", err)
  16. os.Exit(-1)
  17. }
  18. Ossclient = client
  19. }
  20. // OssPutObject oss附件上传
  21. func OssPutObject(objectName string, fd io.Reader, ossBucketName string) (bool, error) {
  22. common.Catch()
  23. // 获取存储空间。
  24. bucket, err := Ossclient.Bucket(ossBucketName)
  25. if err != nil {
  26. logx.Error("Error:", err)
  27. return false, err
  28. }
  29. option := []oss.Option{
  30. oss.ContentDisposition("attachment;filename=" + objectName),
  31. oss.ContentType("application/octet-stream"),
  32. oss.ACReqHeaders("Access-Control-Allow-Origin"),
  33. oss.ACReqMethod("*"),
  34. }
  35. // 上传文件流。 文件超过1M 上传时间超时(发现是受控制台日志打印影响,现已把日志单独处理,注释协程)
  36. err = bucket.PutObject(objectName, fd, option...)
  37. if err != nil {
  38. logx.Error("file upload false:", err)
  39. return false, err
  40. }
  41. return true, nil
  42. }
  43. //删除附件
  44. func OssDelObject(objectName, ossBucketName string) (bool, error) {
  45. common.Catch()
  46. // 获取存储信息
  47. bucket, err := Ossclient.Bucket(ossBucketName)
  48. if err != nil {
  49. logx.Error("Error:", err)
  50. return false, err
  51. }
  52. //附件是否存在 存在再删除
  53. if ok, _ := bucket.IsObjectExist(objectName); !ok {
  54. err = bucket.DeleteObject(objectName)
  55. if err != nil {
  56. logx.Error("file del false:", err)
  57. return false, err
  58. }
  59. }
  60. return true, err
  61. }
  62. func GetHashKey(bs []byte) string {
  63. common.Catch()
  64. ha := sha256.New()
  65. ha.Write(bs)
  66. hbs := ha.Sum(nil)
  67. key := fmt.Sprintf("%x", hbs)
  68. return key
  69. }
  70. func TypeByExt(path string) string {
  71. for i := len(path) - 1; i >= 0 && path[i] != '/'; i-- {
  72. if path[i] == '.' {
  73. return path[i:]
  74. }
  75. }
  76. return ""
  77. }