PHP微信公众号上传拉取图片

前台代码

 //点击选择
    $('.info_head').on('click',function () {
        serverIds = '';
        wx.chooseImage({
            count: 1, // 默认9
            sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
            sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
            success: function (res) {
                var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
                uploadImages(localIds)
            }
        });
    })
    //上传图片
    function uploadImages(localIds) {
        var localId = localIds.pop();
        wx.uploadImage({
            localId: localId,
            isShowProgressTips: 1,
            success: function (res) {
                serverIds += res.serverId + ',';
                if(localIds.length > 0){
                    uploadImages(localIds);
                }else{
                    $.ajax({
                        url:"{:url('Common/upload_wx_pic')}",
                        type:"POST",
                        data:{media:serverIds},
                        success:function (data) {
                            if(data.code == 1){
                                $('#petavatar').attr('src',data.data.httpimgurls);
                                avatar = data.data.imgurls;
                            }
                        }
                    });
                }
            },
        });
    }

后台代码

/**
     * 微信上传图片
     */
    public function upload_wx_pic(){
        $access_token = $this->getAccessToken();
        $img_str = $this->request->param('media','','string');
        $img_arr = explode(',',rtrim($img_str,','));
        $foldername = 'petavatar/'.date('Ymd');
        $imgurls = '';
        foreach($img_arr as $v) {
            $url = $this->getmedia($access_token,$v,$foldername);
            $imgurls .=  ','. $url;
        }
        $data['imgurls'] = ltrim($imgurls,',');
        $data['httpimgurls'] = cmf_get_image_preview_url($data['imgurls']);

        $this->apiResponse(1,'上传成功',$data);
    }

    /**
     * 根据media_id下载微信图片
     * @param $access_token
     * @param $media_id
     * @param $foldername
     * @return string
     */
    private function getmedia($access_token,$media_id,$foldername){
        $url = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=".$access_token."&media_id=".$media_id;
        if (!file_exists("./upload/".$foldername)) {
            mkdir("./upload/".$foldername, 0777, true);
        }
        $file_name=date('YmdHis').rand(1000,9999).'.jpg';
        $targetName = './upload/'.$foldername.'/'.$file_name;
        $saveName = $foldername.'/'.$file_name;
        $ch = curl_init($url); // 初始化
        $fp = fopen($targetName, 'wb'); // 打开写入
        curl_setopt($ch, CURLOPT_FILE, $fp); // 设置输出文件的位置,值是一个资源类型
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_exec($ch);
        curl_close($ch);
        fclose($fp);
        return $saveName;
    }

猜你喜欢

转载自blog.csdn.net/weixin_42330073/article/details/82992107