欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2018年05月30日 10:53:30   作者:blueel  
這篇文章主要介紹了PHP實(shí)現(xiàn)通過(guò)CURL上傳文件功能,結(jié)合實(shí)例形式分析了php使用curl文件上傳操作相關(guān)屬性設(shè)置與使用技巧,需要的朋友可以參考下

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

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

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

假設(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è)诒镜貙?xiě)了一個(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")來(lái)獲取該字符串,和這里的用法不一樣,其實(shí)POST也可以像GET一樣,發(fā)送鍵值對(duì)。在服務(wù)端有一個(gè)超級(jí)全局變量$_POST可以像$_GET一樣,獲取相應(yīng)的POST數(shù)據(jù)的值。需要注意的是,上傳文件的變量不是存在著$_POST中,而是在$_FILES中。

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

<?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ì)把文件寫(xiě)在一個(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ì)有所幫助。

相關(guān)文章

  • php使用正則驗(yàn)證中文

    php使用正則驗(yàn)證中文

    本文給大家分享的是使用php驗(yàn)證字符串中是否有中文的方法,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下
    2016-04-04
  • php根據(jù)用戶名和手機(jī)號(hào)查詢是否存在手機(jī)號(hào)碼

    php根據(jù)用戶名和手機(jī)號(hào)查詢是否存在手機(jī)號(hào)碼

    本文主要分享了php根據(jù)用戶名和手機(jī)號(hào)查詢是否存在手機(jī)號(hào)碼的代碼,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • php 讀取文件亂碼問(wèn)題

    php 讀取文件亂碼問(wèn)題

    php 5的流讀取函數(shù)好像默認(rèn)編碼是UTF-8,以前在php 4里直接file_get_contents()讀取gb2312編碼的正常,到了5就亂碼了。
    2010-02-02
  • 解決Laravel blade模板轉(zhuǎn)義html標(biāo)簽的問(wèn)題

    解決Laravel blade模板轉(zhuǎn)義html標(biāo)簽的問(wèn)題

    今天小編就為大家分享一篇解決Laravel blade模板轉(zhuǎn)義html標(biāo)簽的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-09-09
  • php 解析xml 的四種方法詳細(xì)介紹

    php 解析xml 的四種方法詳細(xì)介紹

    這篇文章主要介紹了php 解析xml 的四種方法詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 隊(duì)列在編程中的實(shí)際應(yīng)用(php)

    隊(duì)列在編程中的實(shí)際應(yīng)用(php)

    隊(duì)列(Queue)是運(yùn)算受到限制的一種線性表。只允許在表的一端進(jìn)行插入,而在另一端進(jìn)行刪除元素的線性表。隊(duì)尾(rear)是允許插入的一端。隊(duì)頭(front)是允許刪除的一端??贞?duì)列是不含元素的空表。
    2010-09-09
  • php有序列表或數(shù)組中刪除指定的值的實(shí)現(xiàn)代碼

    php有序列表或數(shù)組中刪除指定的值的實(shí)現(xiàn)代碼

    這篇文章主要介紹了php有序列表或數(shù)組中刪除指定的值的實(shí)現(xiàn)代碼,刪除給定的值之后,得到一個(gè)新的有序列表,長(zhǎng)度-1,下面是具體的實(shí)現(xiàn)方法
    2021-08-08
  • php封裝的page分頁(yè)類完整實(shí)例

    php封裝的page分頁(yè)類完整實(shí)例

    這篇文章主要介紹了php封裝的page分頁(yè)類,結(jié)合完整實(shí)例形式分析了php數(shù)值運(yùn)算與字符串操作實(shí)現(xiàn)分頁(yè)功能的相關(guān)技巧,需要的朋友可以參考下
    2016-10-10
  • php二維碼生成

    php二維碼生成

    在二維碼越來(lái)越普及之際。我們需要了解一下什么是二維碼,作為了一個(gè)php programer,我們更需要知道如何使用 php生成二維碼。廢話少說(shuō),下面說(shuō)正題。
    2015-10-10
  • 最常用的8款PHP調(diào)試工具

    最常用的8款PHP調(diào)試工具

    這篇文章主要介紹了最常用的8款PHP調(diào)試工具,可以幫助簡(jiǎn)化和加速開(kāi)發(fā)的過(guò)程
    2014-07-07

最新評(píng)論