You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
2.1 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. package utils
  2. import (
  3. "context"
  4. "fmt"
  5. "gin-vue-admin/global"
  6. "github.com/qiniu/api.v7/auth/qbox"
  7. "github.com/qiniu/api.v7/storage"
  8. "mime/multipart"
  9. "time"
  10. )
  11. var accessKey string = global.GVA_CONFIG.Qiniu.AccessKey // 你在七牛云的accessKey 这里是我个人测试号的key 仅供测试使用 恳请大家不要乱传东西
  12. var secretKey string = global.GVA_CONFIG.Qiniu.SecretKey // 你在七牛云的secretKey 这里是我个人测试号的key 仅供测试使用 恳请大家不要乱传东西
  13. // 接收两个参数 一个文件流 一个 bucket 你的七牛云标准空间的名字
  14. func Upload(file *multipart.FileHeader, bucket string, urlPath string) (err error, path string, key string) {
  15. putPolicy := storage.PutPolicy{
  16. Scope: bucket,
  17. }
  18. mac := qbox.NewMac(accessKey, secretKey)
  19. upToken := putPolicy.UploadToken(mac)
  20. cfg := storage.Config{}
  21. // 空间对应的机房
  22. cfg.Zone = &storage.ZoneHuadong
  23. // 是否使用https域名
  24. cfg.UseHTTPS = false
  25. // 上传是否使用CDN上传加速
  26. cfg.UseCdnDomains = false
  27. formUploader := storage.NewFormUploader(&cfg)
  28. ret := storage.PutRet{}
  29. putExtra := storage.PutExtra{
  30. Params: map[string]string{
  31. "x:name": "github logo",
  32. },
  33. }
  34. f, e := file.Open()
  35. if e != nil {
  36. fmt.Println(e)
  37. return e, "", ""
  38. }
  39. dataLen := file.Size
  40. fileKey := fmt.Sprintf("%d%s", time.Now().Unix(), file.Filename) // 文件名格式 自己可以改 建议保证唯一性
  41. err = formUploader.Put(context.Background(), &ret, upToken, fileKey, f, dataLen, &putExtra)
  42. if err != nil {
  43. fmt.Println(err)
  44. //qmlog.QMLog.Info(err)
  45. return err, "", ""
  46. }
  47. return err, urlPath + "/" + ret.Key, ret.Key
  48. }
  49. func DeleteFile(bucket string, key string) error {
  50. mac := qbox.NewMac(accessKey, secretKey)
  51. cfg := storage.Config{
  52. // 是否使用https域名进行资源管理
  53. UseHTTPS: false,
  54. }
  55. // 指定空间所在的区域,如果不指定将自动探测
  56. // 如果没有特殊需求,默认不需要指定
  57. //cfg.Zone=&storage.ZoneHuabei
  58. bucketManager := storage.NewBucketManager(mac, &cfg)
  59. err := bucketManager.Delete(bucket, key)
  60. if err != nil {
  61. fmt.Println(err)
  62. return err
  63. }
  64. return nil
  65. }