微擎中利用微信公众号jssdk实现拍照或选择图片上传

//点击触发logoUp
function logoUp(obj) {
   wx.chooseImage({
      count: 1, // 默认9
      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
      success: function(res) {
         localId = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
         for(i = 0; i < localId.length; i++) {
            wx.uploadImage({
               localId: localId[i].toString(), // 需要上传的图片的本地ID,由chooseImage接口获得
               isShowProgressTips: 1, // 默认为1,显示进度提示
               success: function(res) {
                  var serverId = '';
                  serverId += res.serverId + ","; // 返回图片的服务器端ID
                  //请求自己的服务器通过serverId获取微信服务器中的真实图片
                  $.post(location.href, {
                     "type": "preview",
                     "mediaids": serverId
                  }, function(res) {
                     for(var i = 0; i < res.img_s.length; i++) {
                        $(obj).empty();
                        $(obj).append('<img class="thumb" src='+"{$siteroot}"+res.img_s[i]+' data='+res.img_s[i]+'>');
                        
                     }
                  })
               }
            });
         }
      }
   });
}
$mediaid=$_GPC['mediaids'];
$mediaids = substr($mediaid,0,-1);
$filename=substr($this->downloadImage($mediaids),0,-1);
$filenames = explode(',',$filename);
if($_GPC['type']=="preview"){
    header('content-type:application/json;charset=utf8');
    $res['img_s'] = $filenames;
    exit(json_encode($res));
}
       //下载图片
public function downloadImage($mediaids) {
    global $_W;
    $uniacid = $_W['uniacid'];
    load()->func('file');
    $account = WeAccount::create($_W['account']);
    $mediaarray=explode(",",$mediaids);
    $filenames="";
    foreach($mediaarray as $mediaid){
        $filename = 'FMFetchi'.date('YmdHis').random(16);
        $access_token = $account->fetch_token();
        $url = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=$access_token&media_id=$mediaid";
    
        $fileInfo = $this->downloadWeixinFile($url);
        $updir = '../attachment/images/'.$uniacid.'/'.date("Y").'/'.date("m").'/';
        if(!is_dir($updir)){
            mkdirs($updir);
        }
        //$filename= $updir.$filename.".jpg";
        //个人新增替换解决不同后缀问题
        $filename= $updir.$filename.cType2suffix($fileInfo['content_type']);
        $this->saveWeixinFile($filename, $fileInfo["body"]);
        $filenames.=$filename.",";
    }
    return $filenames;
}

public function downloadWeixinFile($url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_NOBODY, 0);    //只取body头
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $package = curl_exec($ch);
    $httpinfo = curl_getinfo($ch);
    curl_close($ch);
    $imageAll = array_merge(array('header' => $httpinfo), array('body' => $package));
    return $imageAll;
}

public function saveWeixinFile($filename, $filecontent) {
    $local_file = fopen($filename, 'w');
    if (false !== $local_file){
        if (false !== fwrite($local_file, $filecontent)) {
            fclose($local_file);
        }
    }
}

//个人新增
//通过Content-Type转后缀
function cType2suffix($ctype){
    switch ($ctype)
    {
        case "image/gif" :
            $suffix = '.gif';
            break;
        case "image/jpeg" :
            $suffix = '.jpg';
            break;
        case "image/png" :
            $suffix = '.png';
            break;
        default :
            $suffix = '.jpg';
            break;
    }
    return $suffix;
}

实现方式代码来源于微擎付费阅读模块。

image.png

支付宝扫码打赏 微信扫码打赏

如果本文对你有帮助,欢迎打赏本站

喜欢 ()or分享
    匿名评论
  • 评论
人参与,条评论