PHP 遠端上傳圖片以及檔案
阿新 • • 發佈:2019-01-19
1.需要配置環境在 php.ini 檔案裡面加入 extension=php_curl.dll(我安裝的apache在D:盤我的php.ini路徑是在D:\xampp\php\
2重啟apache 看下phpinfo()進行檢視是否配建成功!(可以在apache首頁左邊選單檢視phpinfo())
3.程式碼例項:
下面有兩個PHP檔案我的在本地測試的用的是ci框架,通過檢視上傳檔案然後呼叫PHP1的request_by_curl函式,通過$_FILES 函式把檔案的名稱以及路徑傳入
PHP 2也就是遠端伺服器的php檔案因為在php1執行的時候就就會通過curl庫執行PHP2,,其實PHP2只接收並存放另外一個地方就可以了
/** PHP 1(第一個php檔案) 根據需求傳的引數file_url很重要是檔案路徑、uri是name名檔案的初始, 因為到上傳的遠端的檔案的時候獲取的是php原始的預設路徑以及檔名, 所以在根出傳入了一個最原始的檔案的名字 $file_uri = $_FILES ['filed'] ['name']; $file_url = $_FILES ['filed'] ['tmp_name']; **/ public function request_by_curl( $file_url,$file_uri ) { $curl = curl_init(); // 引入庫檔案 $data = array('filed'=>'@'.$file_url,'nam' =>$file_uri,); // 獲取圖片的路徑 + 圖片名(上傳圖片地址) // 上傳的服務地址,,所以記錄上傳的這個地址配置的路徑是要執行第一段程式碼的在下部分就可以看到 curl_setopt($curl, CURLOPT_URL, "http://192.168.87.2/file/"); // 所要執行的程式碼就是獲取檔案 獲取名字 然後進行上傳 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); $result = curl_exec($curl); curl_close($curl); /*釋放*/ echo json_decode($result); }
/* PHP 2(第二個php檔案) 所要存放的遠端伺服器的php檔案這個地方執行的就是從上面的curl傳送過來的引數 */ public function Fileload() { if($_FILES) { $filename = $_FILES['filed']['name']; $tmpname = $_FILES['filed']['tmp_name']; $url = dirname(__FILE__)."\\img\\"; if( move_uploaded_file($tmpname,$url.$_POST['nam']) ) { echo json_encode('上傳成功'); } else { $data = json_encode($_FILES); echo $data."上傳失敗"; } } }
附加技能,socket或者swoole有興趣的可以研究下,我也是最近才發現的,不過在瞭解這些之前最好能夠了解一下TCP協議(protobuf是做為資料進行傳輸的)