2014-03-01 59 views
0

我一直在試圖弄清楚如何使用下面的代碼而不使用表單來從URL上傳文件。在一個形式,我可以在一個網址,而不是計算機上的本地文件中輸入並上傳它,所以即時猜測其可能?:從URL上傳文件

例如位置:http://www.bubblews.com/assets/images/news/521013543_1385596410.jpg

if ((isset($_FILES['upload']['name'])) && (substr_count($_FILES['upload']['type'],'image/'))) { 

    $prefix = "market/".$market->guid;  
    $filehandler = new ElggFile(); 
    $filehandler->owner_guid = $market->owner_guid; 
    $filehandler->setFilename($prefix . ".jpg"); 
    $filehandler->open("write"); 
    $filehandler->write(get_uploaded_file('upload')); 
    $filehandler->close(); 
+0

聽起來像你應該使用捲曲的。 – joews

+0

將遠程文件下載到您的服務器(又名URL上傳)與本地文件上傳非常不同。使用curl的一個好的解決方案可以在這裏找到:http://stackoverflow.com/questions/6348602/download-remote-file-to-server-with-php –

回答

2

試試這個例子:

Saving image from PHP URL

$ch = curl_init('http://example.com/image.php'); 
$fp = fopen('/my/folder/flower.gif', 'wb'); 
curl_setopt($ch, CURLOPT_FILE, $fp); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_exec($ch); 
curl_close($ch); 
fclose($fp); 

或本

$url = 'http://example.com/image.php'; 
$img = '/my/folder/flower.gif'; 
file_put_contents($img, file_get_contents($url)); 
0

在Linux主機,你可以嘗試

exec("wget ".$_POST['url']); 
+0

運行exec是一個非常糟糕的主意,特別是與不可信的發佈數據。 –