2012-09-16 99 views
1

我有如下代碼:上傳與的file_get_contents捲曲/ imagecreatefromstring

$image = imagecreatefromstring(file_get_contents('http://externaldomain.com/image.png')); 

,並希望使捲曲要求:

$files = array(); 
$files[] = '@' . $image['tmp_name'] . ';filename=' . $image['name'] . ';type=' . $image['type']; 

$ch = curl_init('index.php?route=upload'); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $files); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$response = curl_exec($ch); 

的主要問題是,如何讓文件名和從$image變量的擴展名?

我可以用tempnam()代替$image['tmp_name'],但是其他的東西呢?

還有其他辦法嗎?

回答

1

imagecreatefromstring返回一個GD句柄。沒有與其關聯的tmp_name,名稱,類型。您試圖將該GD句柄視爲標準的基於POST的$ _FILES數據結構的結果。

GD句柄無法傳遞到捲曲上傳,因爲它不是一個真正的圖像,直到你使用imagejpeg/imagepng/imagewhatever將它保存到一個文件,然後你可以指向捲曲,例如

$image = imagecreatefromstring(...); 
imagejpeg($image, 'tempfile.jpg'); 

$files[] = '@tempfile.jpg;filename=tempfile.jpg;type=image/jpeg'; 

curl...