public function actionUpload() {
$this->pathConfig();
$furl = '@d:\develop\JMFrameworkWithDemo.rar'; // @ 開頭表示檔案上傳
$url = 'https://localhost/DemoIndex/curl_pos/';
$this->uploadFileToCdn($furl, $url);
}
public function uploadFileToCdn($furl, $url) {
$ch = curl_init();
$postData = ['upload' => $furl];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); // 1 返回字串,0 直接輸出
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_REFERER, 'https://www.baidu.com'); // 偽造來源
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 100);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); // 陣列自動設為 multipart/form-data
$result = curl_exec($ch);
if ($result === false) {
echo '
cUrl Error: ' . curl_error($ch);
}
curl_close($ch);
echo 'aaa45';
}
function actionCurlPos() {
var_dump($_FILES);
$moved = move_uploaded_file($_FILES['upload']['tmp_name'], '/wamp/tools/1.rar');
if ($moved) echo '11';
}
@ 表示 multipart/form-data 檔案上傳(PHP 5.5+ 建議使用 CURLFile 類別)。CURLOPT_POSTFIELDS 傳陣列時自動設定 Content-Type: multipart/form-data。http_build_query() 再傳送,相容性更好、封包更小。$_FILES 超全域變數取得暫存檔,move_uploaded_file() 移至永久位置。更多 PHP cURL 技巧請參考本站專題:《php curl用法總結》、《php日期與時間用法總結》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》。