2010-08-08 91 views
17

從服務器獲取圖像很簡單,但是我想到了不同的東西。這是一個瘋狂的問題,但...是否有可能發送文件(圖像)到服務器,但不使用表單上傳或FTP連接?我想發送一個請求給例如。帶有二進制內容的http://www.example.com/file.php。我想我需要設置Content-type header image/jpeg,但是如何在我的請求中添加一些內容?CURL PHP發送圖像

回答

10

看到http://docs.php.net/function.curl-setopt

CURLOPT_POSTFIELDS完整數據的HTTP 「POST」 操作來發布。 要發佈文件,請用@預先指定一個文件名並使用完整路徑。這可以作爲urlencoded字符串(如'para1 = val1&para2 = val2&...')傳遞,也可以作爲字段名稱作爲鍵和字段數據作爲值的數組傳遞。如果value是一個數組,則Content-Type頭將被設置爲multipart/form-data。
16

有多種方式捲曲使用上傳的圖像文件,如:

$ch = curl_init(); 
$data = array('name' => 'Foo', 'file' => '@/path/to/image.jpeg'); 
curl_setopt($ch, CURLOPT_URL, 'http://localhost/upload.php'); 
curl_setopt($ch, CURLOPT_POST, 1); 
//CURLOPT_SAFE_UPLOAD defaulted to true in 5.6.0 
//So next line is required as of php >= 5.6.0 
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_exec($ch); 

,您可以檢查的例子:http://au.php.net/manual/en/function.curl-setopt.php

+0

這就是我一直在尋找的文件。謝謝! – 2011-11-28 13:11:23

+0

謝謝你這樣一個完整而簡潔的例子! – 2013-07-08 02:37:38

+3

CURLOPT_SAFE_UPLOAD默認在5.6.0中爲true ...所以你需要添加curl_setopt($ ch,CURLOPT_SAFE_UPLOAD,false);在設置CURLOPT_POSTFIELDS之前。 – muglio 2016-02-15 16:48:28

0

VolkerK是完全正確的,但我的經驗表明,發送文件「 @「運算符只能用於數組。

$post['file'] = "@FILE_Path" 

現在你可以發送郵件使用CURLOPT_POSTFIELDS

+0

不再推薦此方法。請參閱:http://php.net/manual/en/class.curlfile.php – Erik 2014-12-10 03:58:50