Я знаю, что это правда:
… вы можете опубликовать файл, который уже находится в файловой системе, путем префикса пути к файлу с помощью «@».
Тем не менее, я пытаюсь выполнить 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)
. Опять же, это не сработало.
Похоже, способ обойти это – использовать временный файл. Это единственное решение этой проблемы? В любом случае, как я могу решить эту проблему?
Вы не можете использовать 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'