PHP7基于curl實(shí)現(xiàn)的上傳圖片功能
本文實(shí)例講述了PHP7基于curl實(shí)現(xiàn)的上傳圖片功能。分享給大家供大家參考,具體如下:
根據(jù)php版本不同,curl模擬表單上傳的方法不同
php5.5之前
$curl = curl_init(); if (defined('CURLOPT_SAFE_UPLOAD')) { curl_setopt($curl, CURLOPT_SAFE_UPLOAD, false); } $data = array('file' => '@' . realpath($path));//‘@' 符號告訴服務(wù)器為上傳資源 curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, 1 ); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_USERAGENT,"TEST"); $result = curl_exec($curl); $error = curl_error($curl);
php5.5之后,到php7
$curl = curl_init(); curl_setopt($curl, CURLOPT_SAFE_UPLOAD, true); $data = array('file' => new \CURLFile(realpath($path))); url_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, 1 ); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_USERAGENT,"TEST"); $result = curl_exec($curl); $error = curl_error($curl);
下面提供一個(gè)兼容的方法:
$curl = curl_init(); if (class_exists('\CURLFile')) { curl_setopt($curl, CURLOPT_SAFE_UPLOAD, true); $data = array('file' => new \CURLFile(realpath($path)));//>=5.5 } else { if (defined('CURLOPT_SAFE_UPLOAD')) { curl_setopt($curl, CURLOPT_SAFE_UPLOAD, false); } $data = array('file' => '@' . realpath($path));//<=5.5 } curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, 1 ); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_USERAGENT,"TEST"); $result = curl_exec($curl); $error = curl_error($curl);
其中:
$path:為待上傳的圖片地址
$url:目標(biāo)服務(wù)器地址
例如
$url="http://localhost/upload.php"; $path = "/bg_right.jpg"
upload.php示例:
<?php file_put_contents(time().".json", json_encode($_FILES)); $tmp_name = $_FILES['file']['tmp_name']; $name = $_FILES['file']['name']; move_uploaded_file($tmp_name,'audit/'.$name); ?>
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php curl用法總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
PHP面向?qū)ο蟪绦蛟O(shè)計(jì)內(nèi)置標(biāo)準(zhǔn)類,普通數(shù)據(jù)類型轉(zhuǎn)為對象類型示例
這篇文章主要介紹了PHP面向?qū)ο蟪绦蛟O(shè)計(jì)內(nèi)置標(biāo)準(zhǔn)類,普通數(shù)據(jù)類型轉(zhuǎn)為對象類型,結(jié)合實(shí)例形式分析了php面向?qū)ο蟪绦蛟O(shè)計(jì)中的內(nèi)置標(biāo)準(zhǔn)類,普通數(shù)據(jù)類型概念、功能及對象類型轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2019-06-06PHP中4個(gè)加速、緩存擴(kuò)展的區(qū)別和選用建議
這篇文章主要介紹了PHP中eAccelerator、memcached、xcache、APC等4個(gè)加速、緩存擴(kuò)展的區(qū)別和選用建議,需要的朋友可以參考下2014-03-03PHP 數(shù)組和字符串互相轉(zhuǎn)換實(shí)現(xiàn)方法
PHP 中由于數(shù)組和字符串這兩種變量類型是如此常用,以至于 PHP 具有兩個(gè)函數(shù),可以在字符串和數(shù)組之間互相進(jìn)行轉(zhuǎn)換2013-03-03PHP實(shí)現(xiàn)駝峰樣式字符串(首字母大寫)轉(zhuǎn)換成下劃線樣式字符串的方法示例
這篇文章主要介紹了PHP實(shí)現(xiàn)駝峰樣式字符串(首字母大寫)轉(zhuǎn)換成下劃線樣式字符串的方法,涉及php正則替換相關(guān)操作技巧,需要的朋友可以參考下2017-08-08PHP parse_ini_file函數(shù)的應(yīng)用與擴(kuò)展操作示例
這篇文章主要介紹了PHP parse_ini_file函數(shù)的應(yīng)用與擴(kuò)展操作,結(jié)合實(shí)例形式分析了php擴(kuò)展parse_ini_file函數(shù)解析配置文件相關(guān)操作技巧,需要的朋友可以參考下2019-01-01php將fileterms函數(shù)返回的結(jié)果變成可讀的形式
php將fileterms函數(shù)返回的結(jié)果變成可讀的形式,如: rwx--rx--x2011-04-04php foreach 參數(shù)強(qiáng)制類型轉(zhuǎn)換的問題
大家都知道foreach的參數(shù)如果不是數(shù)組類型,在運(yùn)行的時(shí)候 就會出現(xiàn)類似“Warning: Invalid argument supplied for foreach() in XXX”warning信息。2010-12-12