file.go 2.4KB

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