file.go 2.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package controllers
  2. import (
  3. "errors"
  4. "strconv"
  5. "time"
  6. "wechat-conf/utils"
  7. "net/http"
  8. "net/url"
  9. )
  10. // FileUpload 文件上传
  11. func (c *BaseController) FileUpload() {
  12. file, err := c.uploadFileToOSS("file")
  13. if err != nil {
  14. c.ResponseError(err, http.StatusInternalServerError)
  15. }
  16. c.ResponseJSON(map[string]interface{}{
  17. "url": file,
  18. })
  19. }
  20. func (c *BaseController) FileUploadForMatrial() (string, error) {
  21. file, err := c.uploadFileToOSS("media")
  22. if err != nil {
  23. return "", err
  24. }
  25. return file, nil
  26. }
  27. func (c *BaseController) uploadFileToOSS(field string) (string, error) {
  28. aliConf, ok := c.Configer[AliYunConf]
  29. if !ok {
  30. return "", errors.New("没有找到阿里云相关配置")
  31. }
  32. endpoint := aliConf.String("oss::Endpoint")
  33. accessKeyID := aliConf.String("oss::AccessKeyId")
  34. accessKeySecret := aliConf.String("oss::AccessKeySecret")
  35. bucket := aliConf.String("oss::Bucket")
  36. aliCli, err := utils.GetOssClient(endpoint, accessKeyID, accessKeySecret)
  37. if err != nil {
  38. return "", err
  39. }
  40. fNameExtra := strconv.FormatInt(time.Now().Unix(), 10)
  41. fileURL, err := utils.UploadFileToBucket(aliCli, c.Ctx.Request, bucket, field, fNameExtra)
  42. if err != nil {
  43. return "", err
  44. }
  45. return fileURL, nil
  46. }
  47. // UploadBase64Image Upload base64-image to ali-oss
  48. // @Title Upload image to ali-oss
  49. // @Description 上传base64图片到阿里云
  50. // @Param UpImgStr form string true "图片控件name"
  51. // @Success 200 { Url } 图片URL
  52. // @Failure >300 error message
  53. func (c *BaseController) UploadBase64Image() {
  54. base64Str, err := url.QueryUnescape(c.GetString("base64str"))
  55. if err != nil {
  56. c.ResponseError(utils.LogError("上传 Base64 图片失败", err))
  57. }
  58. imgURL, err := c.uploadStringToAliOSS(base64Str)
  59. if err != nil {
  60. c.ResponseError(err)
  61. }
  62. resp := map[string]interface{}{
  63. "url": imgURL,
  64. }
  65. c.ResponseJSON(resp)
  66. }
  67. // uploadStringToAliOSS 上传文件到阿里云
  68. func (c *BaseController) uploadStringToAliOSS(fStr string) (string, error) {
  69. aliConf, ok := c.Configer[AliYunConf]
  70. if !ok {
  71. return "", errors.New("没有找到阿里云相关配置")
  72. }
  73. endpoint := aliConf.String("oss::Endpoint")
  74. accessKeyID := aliConf.String("oss::AccessKeyId")
  75. accessKeySecret := aliConf.String("oss::AccessKeySecret")
  76. bucket := aliConf.String("oss::Bucket")
  77. aliCli, err := utils.GetOssClient(endpoint, accessKeyID, accessKeySecret)
  78. if err != nil {
  79. return "", utils.LogError("配置阿里云客户端失败", err)
  80. }
  81. fileURL, err := utils.UploadStringToBucket(aliCli, bucket, fStr)
  82. if err != nil {
  83. return "", utils.LogError("上传文件到阿里云失败", err)
  84. }
  85. return fileURL, nil
  86. }