media.go 916 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package material
  2. import (
  3. "fmt"
  4. "github.com/silenceper/wechat/v2/util"
  5. )
  6. const (
  7. // UploadImgURL 上传图片
  8. UploadImgURL = "https://qyapi.weixin.qq.com/cgi-bin/media/uploadimg?access_token=%s"
  9. )
  10. // UploadImgResponse 上传图片响应
  11. type UploadImgResponse struct {
  12. util.CommonError
  13. URL string `json:"url"`
  14. }
  15. // UploadImg 上传图片
  16. // @see https://developer.work.weixin.qq.com/document/path/90256
  17. func (r *Client) UploadImg(filename string) (*UploadImgResponse, error) {
  18. var (
  19. accessToken string
  20. err error
  21. )
  22. if accessToken, err = r.GetAccessToken(); err != nil {
  23. return nil, err
  24. }
  25. var response []byte
  26. if response, err = util.PostFile("media", filename, fmt.Sprintf(UploadImgURL, accessToken)); err != nil {
  27. return nil, err
  28. }
  29. result := &UploadImgResponse{}
  30. if err = util.DecodeWithError(response, result, "UploadImg"); err != nil {
  31. return nil, err
  32. }
  33. return result, nil
  34. }