Przeglądaj źródła

feat: 支持企业微信上传临时素材 (#644)

Lien Li 3 lat temu
rodzic
commit
ab354c4d03
1 zmienionych plików z 33 dodań i 0 usunięć
  1. 33 0
      work/material/media.go

+ 33 - 0
work/material/media.go

@@ -9,6 +9,9 @@ import (
 const (
 	// UploadImgURL 上传图片
 	UploadImgURL = "https://qyapi.weixin.qq.com/cgi-bin/media/uploadimg?access_token=%s"
+
+	// UploadTempFile 上传临时素材
+	UploadTempFile = "https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=%s&type=%s"
 )
 
 // UploadImgResponse 上传图片响应
@@ -17,6 +20,14 @@ type UploadImgResponse struct {
 	URL string `json:"url"`
 }
 
+// UploadTempFileResponse 上传临时素材响应
+type UploadTempFileResponse struct {
+	util.CommonError
+	MediaID  string `json:"media_id"`
+	CreateAt string `json:"created_at"`
+	Type     string `json:"type"`
+}
+
 // UploadImg 上传图片
 // @see https://developer.work.weixin.qq.com/document/path/90256
 func (r *Client) UploadImg(filename string) (*UploadImgResponse, error) {
@@ -37,3 +48,25 @@ func (r *Client) UploadImg(filename string) (*UploadImgResponse, error) {
 	}
 	return result, nil
 }
+
+// UploadTempFile 上传临时素材
+// @see https://developer.work.weixin.qq.com/document/path/90253
+// @mediaType 媒体文件类型,分别有图片(image)、语音(voice)、视频(video),普通文件(file)
+func (r *Client) UploadTempFile(filename string, mediaType string) (*UploadTempFileResponse, error) {
+	var (
+		accessToken string
+		err         error
+	)
+	if accessToken, err = r.GetAccessToken(); err != nil {
+		return nil, err
+	}
+	var response []byte
+	if response, err = util.PostFile("media", filename, fmt.Sprintf(UploadTempFile, accessToken, mediaType)); err != nil {
+		return nil, err
+	}
+	result := &UploadTempFileResponse{}
+	if err = util.DecodeWithError(response, result, "UploadTempFile"); err != nil {
+		return nil, err
+	}
+	return result, nil
+}