php文件上传 github,PHP的cURL文件上传
cURL介紹
cURL是一個利用URL語法規定來傳輸文件和數據的工具,支持很多協議,如HTTP、FTP、TELNET等。PHP也支持cURL 庫。本文將介紹 cURL 的一些高級特性,以及在PHP中如何運用它。
PHP創建cURL的基本結構
1)初始化
curl_init()
2)設置變量
curl_setopt()
3)執行并獲取結果
curl_exec()
4)釋放cURL句柄
curl_close()
PHP cURl實現GET和POST
GET方式實現//初始化
$ch = curl_init();
//設置選項,包括URL
curl_setopt($ch, CURLOPT_URL, "http://loalhost/test.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
//執行并獲取HTML文檔內容
$output = curl_exec($ch);
//釋放curl句柄
curl_close($ch);
//打印獲得的數據
print_r($output);
POST方式請求$url = "http://localhost/test.php";
$post_data = array('key' => 'value');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// post數據
curl_setopt($ch, CURLOPT_POST, 1);
// post的變量
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
curl_close($ch);
//打印獲得的數據
print_r($output);
以上方式獲取到的數據是json格式的,使用json_decode函數解釋成數組。
$output_array = json_decode($output,true);
PHP不同版本之間cURL上傳文件的區別
普通curl命令形式訪問
curl -F "name=jason&file=@/tmp/test.jpg" htt://localhost/test.php
PHP的cURL類庫上傳文件
PHP的cURL支持通過給CURL_POSTFIELDS傳遞關聯數組(而不是字符串)來生成multipart/form-data的POST請求。
傳統上,PHP的cURL支持通過在數組數據中,使用“@+文件全路徑”的語法附加文件,供cURL讀取上傳。這與命令行直接調用cURL程序的語法是一致的:
curl_setopt(ch, CURLOPT_POSTFIELDS, array(
'file' => '@'.realpath('image.png'),
));
$ curl -F "file=@/absolute/path/to/image.png"
PHP從5.5開始引入了新的CURLFile類用來指向文件。CURLFile類也可以詳細定義MIME類型、文件名等可能出現在multipart/form-data數據中的附加信息。PHP推薦使用CURLFile替代舊的@語法:
curl_setopt(ch, CURLOPT_POSTFIELDS, [
'file' => new CURLFile(realpath('image.png')),
]);
PHP5.5另外引入了CURL_SAFE_UPLOAD選項,可以強制PHP的cURL模塊拒絕舊的@語法,僅接受CURLFile式的文件。5.5的默認值為false,5.6的默認值為true。
注:PHP5.4及以下版本僅支持@語法形式;PHP5.5兩種都是支持的,設置CURL_SAFE_UPLOAD=true強制使用CURLFile方式;PHP5.6+僅支持CURLFile方式,即使設置CURL_SAFE_UPLOAD=false也是毫無意義的。
參考資料
總結
以上是生活随笔為你收集整理的php文件上传 github,PHP的cURL文件上传的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java乱码base64,解决 JAVA
- 下一篇: 现在柴油多少钱一升啊?