您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)php接口傳輸圖片的方法的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
問題:APP上傳頭像,php作為API端應該如何接收圖片信息?
上傳部分的代碼不是問題,主要是server端如何才能接收到APP端的圖片信息。在B/S架構(gòu)下,可以直接通過form表單設置enctype="multipart/form-data",$_FILES數(shù)組中就有了圖片信息。那么在C/S模式中,也是如此嗎?
解答1(見方式一): 一般是采用二進制流傳輸,客戶端傳的是二進制,服務器端接收,然后file_put_contents寫入文件就可以了。文件名格式,文件放哪里,這些自己定義。
解答2(見方式二):Android或者IOS客戶端模擬一個HTTP的Post請求到服務器端,服務器端接收相應的Post請求后(通過$_FILES獲取圖片資源),返回響應信息給給客戶端。(這一種方式和獲取Html方式提交的方法一樣)
把圖片進行base64加密成字符串,進行傳輸
說明:IOS或者安卓端:通過把圖片進行base64編碼得到字符串,傳給接口
接口端:把接收的字符串進行base64解碼,再通過file_put_contents函數(shù),上傳到指定的位置
/** * 圖片上傳 * @param $imginfo - 圖片的資源,數(shù)組類型。['圖片類型','圖片大小','圖片進行base64加密后的字符串'] * @param $companyid - 公司id * @return mixed */ public function uploadImage( $imginfo , $companyid ) { $image_type = strip_tags($imginfo[0]); //圖片類型 $image_size = intval($imginfo[1]); //圖片大小 $image_base64_content = strip_tags($imginfo[2]); //圖片進行base64編碼后的字符串 $upload = new UploaderService(); $upconfig = $upload->upconfig; if(($image_size > $upconfig['maxSize']) || ($image_size == 0)) { $array['status'] = 13; $array['comment'] = "圖片大小不符合要求!"; return $array; } if(!in_array($image_type,$upconfig['exts'])) { $array['status'] = 14; $array['comment'] = "圖片格式不符合要求!"; return $array; } // 設置附件上傳子目錄 $savePath = 'bus/group/' . $companyid . '/'; $upload->upconfig['savePath'] = $savePath; //圖片保存的名稱 $new_imgname = uniqid().mt_rand(100,999).'.'.$image_type; //base64解碼后的圖片字符串 $string_image_content = base64_decode($image_base64_content); // 保存上傳的文件 $array = $upload->upload($string_image_content,$new_imgname); return $array; }
// 上傳配置信息 public $upconfig = array( 'maxSize' => 3145728, //3145728B(字節(jié)) = 3M 'exts' => array('jpg', 'gif', 'png', 'jpeg'), // 'rootPath' => './Public/Uploads/info/', 'rootPath' => 'https://www.eyuebus.com/Public/Uploads/info/', ); /** * @param $string_image_content - 所要上傳圖片的字符串資源 * @param $new_imgname - 圖片的名稱,如:57c14e197e2d1744.jpg * @return mixed */ public function upload($string_image_content,$new_imgname) { $res['result'] = 1; $res['imgurl'] = ''; $res['comment'] = ''; do { $ret = true; $fullPath = $this->upconfig['rootPath'] . $this->upconfig['savePath']; if(!file_exists($fullPath)){ $ret = mkdir($fullPath, 0777, true); } if(!$ret) { // 上傳錯誤提示錯誤信息 $res['result'] = 12; $res['comment'] = "創(chuàng)建保存圖片的路徑失?。?quot;; return $res; break; } //開始上傳 if (file_put_contents($fullPath.$new_imgname, $string_image_content)){ // 上傳成功 獲取上傳文件信息 $res['result'] = 0; $res['comment'] = "上傳成功!"; $res['imgname'] = $new_imgname; }else { // 上傳錯誤提示錯誤信息 $res['result'] = 11; $res['comment'] = "上傳失敗!"; } } while(0); return $res; }
感謝各位的閱讀!關(guān)于php接口傳輸圖片的方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。