標籤:預覽 pos his auth hpc 連結 review 縮圖 substr
做的項目使用者的頭像是存在ucenter裡面,phpcms通過phpsso這個單點登入系統? 具體的我也不清楚,phpcms內建的v9_member表裡沒有存放帳戶圖片的欄位,如果需要修改,就要修改ucenter裡的頭像,
在phpcms裡讀取帳戶圖片,也需要phpsso,通過它來連結ucenter 從而擷取頭像。
那麼怎麼通過在phpcms的控制器裡,可以修改帳戶圖片呢。
首先分為兩個部分:1.上傳頭像,並且儲存。2.將儲存的頭像產生縮圖,並且在指定位置產生縮圖。
產生的縮圖以後,上傳的頭像就沒有用了,可以刪除,產生的縮圖就用來當頭像顯示(很馬賽克)
代碼如下:
1.檔案上傳函數saveimage,2.編輯設定檔函數edit_myself()(在這裡要修改頭像),3.在指定位置產生縮圖do_upload_avatar() 傳回值是縮圖的路徑,4.初始化phpsso
/* 檔案上傳 * @param type $file $_FILES[‘image‘] * @param int $max_file_size 上傳檔案大小限制, 單位BYTE * @param string $img_folder 上傳檔案路徑 * @param int $imgpreview 是否產生預覽圖(1為產生,其他為不產生); * @param type $imgpreviewsize 縮圖比例 * @return string 圖片路徑 **/ public function saveimage($file, $max_file_size = 500000, $img_folder = "uploadfile/", $imgpreview = 0, $imgpreviewsize = "1/3") {//上傳頭像並儲存,為更改設定檔裡的頭像做準備 //圖片副檔名設定 $uptypes = array(‘image/jpg‘, ‘image/jpeg‘, ‘image/png‘, ‘image/gif‘, ‘image/bmp‘); //$file1 = $_FILES["image1"][tmp_name];//臨時檔案 $filename = $file["tmp_name"]; $pinfo = pathinfo($file["name"]); //array $ftype = $pinfo[‘extension‘]; //副檔名 // var_dump($ftype);exit; if (!is_uploaded_file($file["tmp_name"])) {//是否存在檔案 echo "圖片不存在!"; exit; } // $file = $_FILES["image1"]; // if ($max_file_size < $file["size"]) {//檢查檔案大小 // echo "檔案太大!"; // exit; // } if (!in_array($file["type"], $uptypes)) {//檢查檔案類型 echo "檔案類型不符!" . $file["type"]; exit; } if (!file_exists($img_folder)) { mkdir($img_folder); } $img = $img_folder . time() .rand(1,100). "." . $ftype; //圖片路徑加圖片名 有了 時間戳記和隨機數 所以就不必驗證檔案名稱了,如果還能有重複的,我也很無奈啊。 // if (file_exists($img)) { // echo "同名檔案已經存在了"; // exit; // } if (!move_uploaded_file($filename, $img)) { echo "移動檔案出錯"; exit; } // echo $img;exit; return $img; }public function edit_myself(){//編輯設定檔 用到上傳的頭像$userid = param::get_cookie(‘_userid‘);$username=$_POST[‘username‘];$this->mem = pc_base::load_model(‘member_model‘);$res=$this->mem->select(array(‘userid‘=>$userid),"phpssouid");$phpssouid=$res[0][‘phpssouid‘];$avator=get_memberavatar($phpssouid);//var_dump($avator);exit;// echo "<pre>";// var_dump($_POST); // echo "<br>";//var_dump($_FILES);exit;//var_dump($res_save);exit; //uploadimg/1494923496.jpgif( $_FILES[‘avator‘][‘name‘]!=‘‘ ){$res_save=$this->saveimage($_FILES[‘avator‘]);$ava = $this->do_upload_avatar($phpssouid,$res_save); //儲存頭像}//var_dump($ava);exit;if ($username) {$mem = $this->mem->update(array(‘nickname‘=>$username),array(‘userid‘=>$userid)); }$this->personal();}private function do_upload_avatar($phpssouid,$avatarurl){//將上傳的頭像儲存是phpsso的索洛圖檔案夾,並產生縮圖//echo " --1-----1";exit;// 處理檔案夾 開始//根據使用者id給檔案夾起名字$dir1 = ceil($phpssouid / 10000);$dir2 = ceil($phpssouid % 10000 / 1000);//建立圖片隱藏檔夾//此處寫入程式碼,圖片強制儲存到sso中$avatarfile = PHPCMS_PATH.‘phpsso_server/uploadfile/avatar/‘;$dir = $avatarfile.$dir1.‘/‘.$dir2.‘/‘.$phpssouid.‘/‘;$avatar_url = APP_PATH . ‘phpsso_server/uploadfile/avatar/‘.$dir1.‘/‘.$dir2.‘/‘.$phpssouid.‘/‘;// echo $avatarfile;D:\workspace\project\shaimobao\phpsso_server/uploadfile/avatar/// echo "-----------";// echo $dir;D:\workspace\project\shaimobao\phpsso_server/uploadfile/avatar/3/1/20750/// echo "--------";// echo $avatar_url;http://www.cms.localhost/phpsso_server/uploadfile/avatar/3/1/20750/// exit;if(!file_exists($dir)) {//根據id建立檔案夾mkdir($dir, 0777, true);}//處理檔案夾 end$arr_url = parse_url($avatarurl);// echo 1111;// var_dump( $arr_url);exit; // path ‘uploadimg/1494923821.jpg$filename = substr($arr_url[‘path‘],0,1)==‘/‘?substr($arr_url[‘path‘],1):$arr_url[‘path‘];$filename = substr($arr_url[‘path‘],0,1)==‘\\‘?substr($arr_url[‘path‘],1):$arr_url[‘path‘];//echo $filename;exit;// uploadimg/1494923821.jpg$filename = PHPCMS_PATH . $filename;//echo $filename;//D:\workspace\project\shaimobao\uploadimg/1494923889.jpgif( !file_exists($filename) ) return;//產生縮圖pc_base::load_sys_class(‘image‘,‘‘,‘0‘);$image = new image(1,0);$image->thumb($filename, $dir.‘30x30.jpg‘, 30, 30);$image->thumb($filename, $dir.‘45x45.jpg‘, 45, 45);$image->thumb($filename, $dir.‘90x90.jpg‘, 90, 90);$image->thumb($filename, $dir.‘180x180.jpg‘, 180, 180);$aa=$image->thumb($filename, $dir.‘480x480.jpg‘, 480, 480);$this->_init_phpsso();$status = $this->client->ps_updateavatar($phpssouid);$avatar = $avatar_url.‘480x480.jpg‘;if( file_exists($filename) ){ //刪除臨時檔案,只保留縮圖unlink ($filename); }return $avatar;}/** * 初始化phpsso * about phpsso, include client and client configure * @return string phpsso_api_url phpsso地址 */private function _init_phpsso() {pc_base::load_app_class(‘client‘, ‘member‘, 0);define(‘APPID‘, pc_base::load_config(‘system‘, ‘phpsso_appid‘));$phpsso_api_url = pc_base::load_config(‘system‘, ‘phpsso_api_url‘);$phpsso_auth_key = pc_base::load_config(‘system‘, ‘phpsso_auth_key‘);$this->client = new client($phpsso_api_url, $phpsso_auth_key);return $phpsso_api_url;}
phpcms 使用者修改頭像