Отправить запрос cURL с URL? - PullRequest
0 голосов
/ 25 мая 2011

Привет,

Я ищу способ отправить запрос curl с полным URL-адресом. Все примеры и документация, которые я могу найти, выглядят примерно так:

$fullFilePath = 'C:\temp\test.jpg';
$upload_url = 'http://www.example.com/uploadtarget.php';
$params = array(
    'photo'=>"@$fullFilePath",
    'title'=>$title
);      

$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_URL, $upload_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
$response = curl_exec($ch);
curl_close($ch);

Проблема в том, что файл "test.jpg" фактически генерируется динамически скриптом на сервере (поэтому он не существует в файловой системе).

Как я могу отправить запрос, используя $ file = "http://www.mysite.com/generate/new_image.jpg"

Одним из решений, которое пришло на ум, была загрузка «new_image.jpg» в память с помощью fopen или file_get_contents (), но как только я дошел до этого момента, я не уверен, как отправить его как POST на другой сайт

1 Ответ

1 голос
/ 25 мая 2011

Безусловно, самым простым решением будет записать файл во временную папку, а затем удалить его после завершения запроса cURL:

// assume $img contains the image file
$filepath = 'C:\temp\tmp_image_' . rand() . '.jpg'
file_put_contents($filepath, $img);
$params = array(
    'photo'=>"@$filepath",
    'title'=>$title
);    
// do cURL request using $params...

unlink($filepath);

Обратите внимание, что я вставляю случайное число, чтобы избежатьусловия гонки.Если ваше изображение не очень большое, было бы лучше использовать md5($img) в вашем имени файла вместо rand(), что может по-прежнему приводить к коллизиям.

...