假設server端上傳文件處理腳本upload.php:
復制代碼 代碼如下:
<?php
print_r($_POST);
print_r($_FILES);
1、使用 CURL 默認的方法
復制代碼 代碼如下:
//如果php文件是utf8編碼,系統是GBK編碼,那麼就需要轉下編碼,要不然Php在系統中找不到這個文件
$file = realpath(mb_convert_encoding('測試圖片.JPG','GBK','utf8'));
$file = realpath('temp.jpg'); //要上傳的文件
$fields['f'] = '@'.$file; // 前面加@符表示上傳圖片
$ch =curl_init();
curl_setopt($ch,CURLOPT_URL,'http://localhost/upload.php');
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$content = curl_exec($ch);
echo $content;
2、另類的做法,有時我們需要將動態產生的內容當做文件上傳到遠程服務器,卻又不想在本地服務器中構建臨時文件。這樣就有了這個另類的寫法
復制代碼 代碼如下:
$contents =<<< 'TEXT'
這裡是文件內容,也可以是圖片二進制,圖片需要修改上傳文件類型
TEXT;
$varname = 'my';//上傳到$_FILES數組中的 key
$name = '3.txt';//文件名
$type = 'text/plain';//文件類型
$key = "$varname\"; filename=\"$name\r\nContent-Type: $type\r\n";
$fields[$key] = $contents;
$ch =curl_init();
curl_setopt($ch,CURLOPT_URL,'http://localhost/upload.php');
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$content = curl_exec($ch);
echo $content;