總所周知,檔案上傳到之後,使用$src= "https://api.weixin.qq.com/cgi-bin/media/get?access_token=" . $access_token . "&media_id=" . $f ['file'];就可以擷取到檔案資訊,若是圖片,使用img標籤的將其src屬性設定為$src就可以在頁面顯示圖片了。
這篇就用這個作為檔案的URL進行檔案下載:
$url = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=" . $access_token . "&media_id=" . $f ['file'];
其中$access_token是根據公眾平台註冊的APPID、秘鑰等加密之後擷取到的簽名,$f ['file']是上傳到伺服器之後返回來的檔案在伺服器上的資訊,是一個字串,有點類似於:檔案上傳到伺服器之後,在檔案表中插入一條資料記載這個檔案的名稱、路徑、所屬AppId等基本資料,並將這條資料的主鍵序號返回給用戶端。$f ['file']就是這個主鍵序號。
檔案下載的調用方法:
var $array = $this->getImage($url,$path,$fileName,1);
檔案下載的具體代碼:
/**功能:下載遠程圖片儲存到本地*參數:*$url:需要下載的檔案url,*$path:下載下來的檔案需要儲存到的目錄*$fileName:儲存檔案名稱,當儲存檔案名稱為空白時則使用遠程檔案原來的名稱*type:使用的下載方式*/function getImage($url,$save_dir='',$filename='',$type=0){$ext=".jpg";//以jpg的格式結尾clearstatcache();//清除檔案快取if(trim($url)==''){return array('file_name'=>'','save_path'=>'','error'=>1);}if(trim($save_dir)==''){$save_dir='./';}if(trim($filename)==''){//儲存檔案名稱$filename=time().$ext;}else{$filename = $filename.$ext;}if(0!==strrpos($save_dir,'/')){$save_dir.='/';}//建立儲存目錄if(!is_dir($save_dir)){//檔案夾不存在,則建立//print_r($save_dir."檔案不存在");mkdir(iconv("UTF-8", "GBK", $save_dir),0777,true);//mkdir($save_dir,0777,true);}//擷取遠程檔案所採用的方法 if($type){$ch=curl_init();$timeout=3;curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);$img=curl_exec($ch);curl_close($ch);}else{ob_start(); readfile($url);$img=ob_get_contents(); ob_end_clean(); }$size=strlen($img);//檔案大小 //var_dump("檔案大小:".$size);$fp2=@fopen($save_dir.$filename,'w');fwrite($fp2,$img);fclose($fp2);unset($img,$url);return array('file_name'=>$filename,'save_path'=>$save_dir.$filename,'error'=>0);}