当前位置: 移动技术网 > IT编程>脚本编程>Go语言 > go上传图片微信服务器<<临时素材

go上传图片微信服务器<<临时素材

2019年08月05日  | 移动技术网IT编程  | 我要评论
type wximage struct {
    type      string  `json:"type"`
    mediaid   string  `json:"media_id"`
    createdat int     `json:"created_at"`
}
func upimage(token, filename string) string {
    //打开文件
    fh, err := os.open(filename)
    if err != nil {
        logs.info("error opening file")
        return ""
    }
    defer fh.close()
    bodybuf := &bytes.buffer{}
    bodywriter := multipart.newwriter(bodybuf)

    filewriter, err := bodywriter.createformfile("image", filepath.base(filename))
    if err != nil {
        logs.info("error writing to buffer")
        return ""
    }

    _, err = io.copy(filewriter, fh)
    if err != nil {
        return ""
    }
    bodywriter.close()
        
    //upload
    req, err := http.newrequest("post", fmt.sprintf("https://api.weixin.qq.com/cgi-bin/media/upload?access_token=%s&type=image", token), bodybuf)
    req.header.add("content-type", bodywriter.formdatacontenttype())
    urlquery := req.url.query()
    if err != nil {
        return ""
    }
    urlquery.add("access_token", token)
    urlquery.add("type", "image")

    req.url.rawquery = urlquery.encode()
    client := http.client{}
    res, err := client.do(req)
    if err != nil {
        return ""
    }
    defer res.body.close()
    jsonbody, err := ioutil.readall(res.body)

    if err != nil {
        logs.error("上传图片结果失败, err: %v", err)
        return ""
    }
    var result wximage
    json.unmarshal(jsonbody, &result)
    return result.mediaid
}

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网