2015-01-12 158 views
0

我已經在這個3天了,但我似乎無法解決它,用戶將輸入的URL和系統將上傳到遠程服務器..這是我到目前爲止所做的工作使用curl將URL文件上傳到遠程服務器

$POST_DATA = array(
    'file' => '@'. 'http://images.visitcanberra.com.au/images/canberra_hero_image.jpg', 
    'extension' => 'txt', 
    'filename' => 'test', 
    'directory' => 'uploads/' 
); 

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, 'http://1234.4321.67.11/upload.php'); 
curl_setopt($curl, CURLOPT_TIMEOUT, 30); 
curl_setopt($curl, CURLOPT_POST, 1); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $POST_DATA); 
$response = curl_exec($curl); 

curl_close ($curl); 
+0

我想你需要設置爲multipart/FORMDATA不然你會uriencoded不能攜帶的文件類型。 – Jasen

+0

您是否收到錯誤?我懷疑上傳文件名必須是本地文件,而不是URL。因此,您可能必須先將文件下載到本地文件,然後再將其上傳。 – Barmar

回答

0

使用下面的函數上傳使用捲曲的遠程圖像。通過將圖片url和路徑傳遞到文件夾來保存圖片來調用此方法。

function grab_image($url,$saveto){ 
     $ch = curl_init ($url); 
     curl_setopt($ch, CURLOPT_HEADER, 0); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_BINARYTRANSFER,1); 
     $raw=curl_exec($ch); 
     curl_close ($ch); 
     if(file_exists($saveto)){ 
      unlink($saveto); 
     } 
     $fp = fopen($saveto,'x'); 
     fwrite($fp, $raw); 
     fclose($fp); 
    } 

,並確保在php.ini中allow_url_fopen選項是讓

0
$file_name_with_full_path = realpath('./upload/example.png'); 
$curl_handle = curl_init("https://example.com"); 
curl_setopt($curl_handle, CURLOPT_POST, 1); 
$args['file'] = new CurlFile($file_name_with_full_path, 'image/png'); 
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $args); 
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true); 
$returned_data = curl_exec($curl_handle); 
curl_close ($curl_handle); 
echo $returned_data; 
+0

爲什麼OP應該「試試這個」?一個**好的答案**將總是解釋做了什麼以及爲什麼這樣做,不僅是爲了OP,而且是爲了將來訪問SO的人可能會發現這個問題並且正在閱讀你的答案。 –

相關問題