github.com/chanxuehong/wechat@v0.0.0-20230222024006-36f0325263cd/mp/dkf/account/head_img.go (about)

     1  package account
     2  
     3  import (
     4  	"io"
     5  	"os"
     6  	"path/filepath"
     7  
     8  	"github.com/chanxuehong/wechat/mp/core"
     9  )
    10  
    11  // UploadHeadImage 上传客服头像.
    12  func UploadHeadImage(clt *core.Client, kfAccount, imageFilePath string) (err error) {
    13  	file, err := os.Open(imageFilePath)
    14  	if err != nil {
    15  		return
    16  	}
    17  	defer file.Close()
    18  
    19  	return UploadHeadImageFromReader(clt, kfAccount, filepath.Base(imageFilePath), file)
    20  }
    21  
    22  // UploadHeadImageFromReader 上传客服头像.
    23  //
    24  //	NOTE: 参数 filename 不是文件路径, 是 multipart/form-data 里面 filename 的值.
    25  func UploadHeadImageFromReader(clt *core.Client, kfAccount, filename string, reader io.Reader) (err error) {
    26  	// TODO
    27  	//	incompleteURL := "https://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?kf_account=" +
    28  	//		url.QueryEscape(kfAccount) + "&access_token="
    29  	incompleteURL := "https://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?kf_account=" +
    30  		kfAccount + "&access_token="
    31  
    32  	var fields = []core.MultipartFormField{{
    33  		IsFile:   true,
    34  		Name:     "media",
    35  		FileName: filename,
    36  		Value:    reader,
    37  	}}
    38  	var result core.Error
    39  	if err = clt.PostMultipartForm(incompleteURL, fields, &result); err != nil {
    40  		return
    41  	}
    42  	if result.ErrCode != core.ErrCodeOK {
    43  		err = &result
    44  		return
    45  	}
    46  	return
    47  }