Как использовать синтаксис «@» cURL с удаленным URL-адресом?

Я знаю, что это правда:

… вы можете опубликовать файл, который уже находится в файловой системе, путем префикса пути к файлу с помощью «@».

Тем не менее, я пытаюсь выполнить POST файл с cURL, который не является локальным. Он хранится на другом URL-адресе. Скажем, эта фотография – логотип Google (это не так). URL-адрес: http://img.ruphp.com/php/logo11w.png . Поэтому я бы подумал, что вы сделаете что-то вроде этого:

 $file = file("http://img.ruphp.com/php/logo11w.png"); // some more stuff // define POST data $post_data = array('somekey' => 'somevalue', 'image' => '@' . $file); 

Однако, по всей видимости, это не работает. Кроме того, я попытался использовать 'image' => '@' . file_get_contents($url) 'image' => '@' . file_get_contents($url) . Опять же, это не сработало.

Похоже, способ обойти это – использовать временный файл. Это единственное решение этой проблемы? В любом случае, как я могу решить эту проблему?

Related of "Как использовать синтаксис «@» cURL с удаленным URL-адресом?"

Вы не можете использовать http url для пути к файлу на curl. Вы должны использовать локальный файл. Поэтому сначала загрузите файл во временный каталог.

 file_put_contents("/var/tmp/xyz/output.jpg", file_get_contents("http://img.ruphp.com/php/logo11w.png")); 

Затем используйте этот временный файл в свой curl:

 'image' => '@/var/tmp/xyz/output.jpg'