濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > PHP實(shí)現(xiàn)通過CURL上傳文件功能示例

PHP實(shí)現(xiàn)通過CURL上傳文件功能示例

熱門標(biāo)簽:拉薩打電話機(jī)器人 沈陽人工智能電銷機(jī)器人公司 電銷機(jī)器人-快迭智能 h5 地圖標(biāo)注 高識(shí)別電銷機(jī)器人 合肥外呼系統(tǒng)app 寶安400電話辦理 哈爾濱400電話辦理到易號(hào)網(wǎng) 智能外呼電銷系統(tǒng)

本文實(shí)例講述了PHP實(shí)現(xiàn)通過CURL上傳文件功能。分享給大家供大家參考,具體如下:

PHP使用CURL上傳文件只需發(fā)送一個(gè)POST請(qǐng)求就可以了,在請(qǐng)求中設(shè)置某個(gè)字段為需要上傳的文件全路徑,并且以"@"開頭,然后使用CURL把該變量以POST方式發(fā)送到服務(wù)器,在服務(wù)端即可以從超級(jí)全局變量$_FILES中取到相應(yīng)的上傳文件信息。

下面我們以一個(gè)例子來展示這個(gè)過程。

假設(shè)本地有一個(gè)文本文件log.txt,其路徑為"/www/test/log.txt",內(nèi)容如下:

this is a file for test
hello PythonTab!

為了把這個(gè)文件上傳給服務(wù)端的腳本http://yourwebname.com/upload.php,我們?cè)诒镜貙懥艘粋€(gè)名為curl_file.php的腳本,內(nèi)容如下:

?php
$url = "http://yourwebname.com/upload.php";
$post_data = array(
"foo" => "bar",
//要上傳的本地文件地址
"upload" = > "@/www/test/log.txt"
);
$ch = curl_init();
curl_setopt($ch , CURLOPT_URL , $url);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch , CURLOPT_POST, 1);
curl_setopt($ch , CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
?>

curl_file.php的邏輯很簡(jiǎn)單,設(shè)置POST變量$post_data,其中upload指向需要發(fā)送的文件。這里要注意,我們之前使用POST都是發(fā)送一個(gè)字符串,然后在服務(wù)器端使用file_get_contents("php//input")來獲取該字符串,和這里的用法不一樣,其實(shí)POST也可以像GET一樣,發(fā)送鍵值對(duì)。在服務(wù)端有一個(gè)超級(jí)全局變量$_POST可以像$_GET一樣,獲取相應(yīng)的POST數(shù)據(jù)的值。需要注意的是,上傳文件的變量不是存在著$_POST中,而是在$_FILES中。

為了展示服務(wù)端收到上述代碼的文件上傳請(qǐng)求的邏輯,我們?cè)趗pload.php中寫了以下代碼:

?php
echo var_export($_FILES,true);
echo file_get_contents($_FILES['upload']['tmp_name']);
copy($_FILES['upload']['tmp_name'], "./log_copy.txt");
?>

upload.php首先使用var_export$_FILES變量輸出到標(biāo)準(zhǔn)輸出,然后使用file_get_contents讀取$_FILES['upload']['tmp_name']所指文件的內(nèi)容,并輸出到標(biāo)準(zhǔn)輸出,然后把$_FILES['upload']['tmp_name']所指文件自制到當(dāng)前目錄的log_copy.txt文件中。該腳本的標(biāo)準(zhǔn)輸出如下:

array(
'upload' =>
array(
'name' => 'log.txt',
'type' => 'application/octet-stream',
'tmp_name' => '/tmp/phpLUB59F',
'error' => 0,
'size' => 36,
)
)
this is a file for test
hello PythonTab!

可以看到$_FILES變量中有一個(gè)upload數(shù)組,對(duì)應(yīng)到上傳文件描述信息,其中name和type分別表示名稱和類型。tmp_name比較關(guān)鍵,服務(wù)端在接收到上傳文件之后,會(huì)把文件寫在一個(gè)臨時(shí)文件中,這個(gè)臨時(shí)文件的名字就是tmp_name的值,這也是為什么我們讀取該文件可以獲取一log.txt的文件內(nèi)容。一般在服務(wù)端接收到上傳文件后都需要立即讀取該文件或者把文件復(fù)制到別外一個(gè)文件中,因?yàn)閠mp_name所指的臨時(shí)文件在服務(wù)端腳本執(zhí)行完畢后會(huì)被刪除掉,upload.php腳本的最后一行就是把臨時(shí)文件復(fù)制到我們的目標(biāo)文件中。

更多關(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é)》

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • ThinkPHP5+UEditor圖片上傳到阿里云對(duì)象存儲(chǔ)OSS功能示例
  • Thinkphp整合阿里云OSS圖片上傳實(shí)例代碼
  • ThinkPHP 3使用OSS的方法
  • thinkPHP簡(jiǎn)單導(dǎo)入和使用阿里云OSSsdk的方法
  • php版阿里云OSS圖片上傳類詳解
  • php下通過curl抓取yahoo boss 搜索結(jié)果的實(shí)現(xiàn)代碼
  • php使用curl模擬瀏覽器表單上傳文件或者圖片的方法
  • php中上傳文件的的解決方案
  • PHP上傳文件及圖片到七牛的方法
  • PHP+Ajax實(shí)現(xiàn)上傳文件進(jìn)度條動(dòng)態(tài)顯示進(jìn)度功能
  • php實(shí)現(xiàn)表單提交上傳文件功能
  • 詳解PHP使用OSS上傳文件

標(biāo)簽:威海 梅州 山東 張家口 林芝 泰州 成都 巴中

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP實(shí)現(xiàn)通過CURL上傳文件功能示例》,本文關(guān)鍵詞  PHP,實(shí)現(xiàn),通過,CURL,上傳,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP實(shí)現(xiàn)通過CURL上傳文件功能示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP實(shí)現(xiàn)通過CURL上傳文件功能示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    南陵县| 凉城县| 佛教| 宣城市| 台安县| 涡阳县| 罗田县| 苗栗市| 道真| 枣阳市| 铜梁县| 珲春市| 阜宁县| 襄城县| 水城县| 蕉岭县| 静海县| 长兴县| 清新县| 阿拉善左旗| 田东县| 龙州县| 故城县| 绩溪县| 永修县| 长沙市| 安新县| 子洲县| 威宁| 民勤县| 鞍山市| 讷河市| 宝应县| 科技| 泰宁县| 邢台县| 土默特右旗| 吉林市| 阜宁县| 建宁县| 沭阳县|