1
0
mirror of https://github.com/silenceper/wechat.git synced 2026-02-23 13:42:25 +08:00

add stream_upload_source

This commit is contained in:
_oah
2024-07-23 23:28:02 +08:00
parent 05ac7148d4
commit a8e6bce5ad
4 changed files with 118 additions and 13 deletions

View File

@@ -3,6 +3,7 @@ package material
import (
"encoding/json"
"fmt"
"io"
"github.com/silenceper/wechat/v2/util"
)
@@ -62,6 +63,38 @@ func (material *Material) MediaUpload(mediaType MediaType, filename string) (med
return
}
// MediaUploadFromReader 临时素材上传
func (material *Material) MediaUploadFromReader(mediaType MediaType, filename string, reader io.Reader) (media Media, err error) {
var accessToken string
accessToken, err = material.GetAccessToken()
if err != nil {
return
}
uri := fmt.Sprintf("%s?access_token=%s&type=%s", mediaUploadURL, accessToken, mediaType)
var byteData []byte
byteData, err = io.ReadAll(reader)
if err != nil {
return
}
var response []byte
response, err = util.PostFileByStream("media", filename, uri, byteData)
if err != nil {
return
}
err = json.Unmarshal(response, &media)
if err != nil {
return
}
if media.ErrCode != 0 {
err = fmt.Errorf("MediaUpload error : errcode=%v , errmsg=%v", media.ErrCode, media.ErrMsg)
return
}
return
}
// GetMediaURL 返回临时素材的下载地址供用户自己处理
// NOTICE: URL 不可公开因为含access_token 需要立即另存文件
func (material *Material) GetMediaURL(mediaID string) (mediaURL string, err error) {