From 35af33f0bcb30b35d6df25486f05a513d801c4eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=99=B6?= Date: Fri, 20 Dec 2024 14:34:27 +0800 Subject: [PATCH] feat(media): add UploadImgFromReader api (#802) * feat(media): add getTempFile api add getTempFile api * feat(media): handle error in GetTempFile handle error in GetTempFile * feat(media): add UploadImgFromReader api add UploadImgFromReader api * fix(media): fixed not return common error fixed not return common error --- work/material/media.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/work/material/media.go b/work/material/media.go index c3c8e0c..551eeee 100644 --- a/work/material/media.go +++ b/work/material/media.go @@ -59,6 +59,30 @@ func (r *Client) UploadImg(filename string) (*UploadImgResponse, error) { return result, err } +// UploadImgFromReader 从 io.Reader 上传图片 +// @see https://developer.work.weixin.qq.com/document/path/90256 +func (r *Client) UploadImgFromReader(filename string, reader io.Reader) (*UploadImgResponse, error) { + var ( + accessToken string + err error + ) + if accessToken, err = r.GetAccessToken(); err != nil { + return nil, err + } + var byteData []byte + byteData, err = io.ReadAll(reader) + if err != nil { + return nil, err + } + var response []byte + if response, err = util.PostFileByStream("media", filename, fmt.Sprintf(uploadImgURL, accessToken), byteData); err != nil { + return nil, err + } + result := &UploadImgResponse{} + err = util.DecodeWithError(response, result, "UploadImg") + return result, err +} + // UploadTempFile 上传临时素材 // @see https://developer.work.weixin.qq.com/document/path/90253 // @mediaType 媒体文件类型,分别有图片(image)、语音(voice)、视频(video),普通文件(file) @@ -166,5 +190,13 @@ func (r *Client) GetTempFile(mediaID string) ([]byte, error) { if err != nil { return nil, err } + + // 检查响应是否为错误信息 + err = util.DecodeWithCommonError(response, "GetTempFile") + if err != nil { + return nil, err + } + + // 如果不是错误响应,则返回原始数据 return response, nil }