1、使用 CURL 預設的方法
$file = realpath('gif/1.gif'); //要上傳的檔案 $fields['f'] = '@'.$file; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://localhost/ajax_server.php?id=1"); curl_setopt($ch, CURLOPT_POST, 1 ); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); curl_exec ($ch); curl_close ($ch);
2、另類的做法,有時我們需要將動態產生的內容當做檔案上傳到遠程伺服器,卻又不想在本機伺服器中構建臨時檔案。這樣就有了這個另類的寫法
$contents =<<< 'TEXT'資料報中應該是Content-Disposition: form-data; name="userfile"; filename="file_name"Content-Type: 文件類型檔案內容這樣的格式,我只實現了檔案名稱部分,文件類型不知道如何?。這樣上傳後就取不到 type 的值curl_upload_server.php<xmp><?phpprint_r($_FILES);echo "檔案內容:\n";$p = current($_FILES);readfile($p['tmp_name']);TEXT;$fields['f"; filename="x.x'] = $contents; //這個關聯鍵的寫法很怪異吧?$ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://localhost/curl_upload_server.php"); curl_setopt($ch, CURLOPT_POST, 1 );curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$s = curl_exec ($ch); curl_close ($ch); echo $s;
很有趣吧
嗯,解決了
$contents =<<< 'TEXT'資料報中應該是Content-Disposition: form-data; name="userfile"; filename="file_name"Content-Type: 文件類型檔案內容這樣的格式,我只實現了檔案名稱部分,文件類型不知道如何?。這樣上傳後就取不到 type 的值curl_upload_server.php<xmp><?phpprint_r($_FILES);echo "檔案內容:\n";$p = current($_FILES);readfile($p['tmp_name']);TEXT;$fields['f"; filename="x.x'] = $contents; //這個關聯鍵的寫法很怪異吧?$ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://localhost/curl_upload_server.php"); curl_setopt($ch, CURLOPT_POST, 1 );curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$s = curl_exec ($ch); curl_close ($ch); echo $s;