微信JSSDK图片上传及保存问题


function upload_pic_all($media_id_all,$file_url) {
    $access_token = get_access_token();
    //return $access_token;
    if (!$access_token) return false;
    $media_id_arr = explode(',', $media_id_all);
    $all_filename='';
    foreach ($media_id_arr as $media_id)
    {
        $url = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=".$access_token."&media_id=".$media_id;
        
        if (!file_exists(UPLOAD_PATH)) {
            mkdir($file_url, 0775, true); //将图片保存到upload目录
        }
        $fileName = date('YmdHis').rand(1000,9999).'.jpg';
        $targetName = $file_url. $fileName;

        $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);
        $all_filename .= $targetName.",,";
    }
    $all_filename_1=substr($all_filename,0,-2);
    return $all_filename_1; //输出文件
}

上面的代码能正常下载并保存图片,但是保存的图片却打不开,用看图软件打开时提示格式不对,请问怎么回事?

需要转码,如下:

$url = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=".$access_token."&media_id=".$media_id;
$data = base64_encode(file_get_contents($url));
$path = '/uploads/wx/' . date('Ymd') . '/';
         if (!is_dir($_SERVER['DOCUMENT_ROOT'].$path)) {   
              mkdir($_SERVER['DOCUMENT_ROOT'].$path,0777,true);
         }
         $imageSrc=  $path."/". $imageName;  //图片名字
$r = file_put_contents($_SERVER['DOCUMENT_ROOT'].$imageSrc, base64_decode($data));//返回的是字节数

打印file_get_contents($url)这个出现{"errcode":40007,"errmsg":"invalid media_id"}这个错误怎么弄?
打印出$ch = curl_init($url);这个出现 Resource id #106和Resource id #107又是什么意思?