我知道这是真的:
…您可以通过在文件路径前加上"@"来发布已经在文件系统上的文件。
然而,我试图POST一个文件与cURL不是本地的。它存储在其他URL上。让我们假设这张照片是谷歌的标志(它不是)。URL是https://www.google.com/images/srpr/logo11w.png
。所以我认为你应该这样做:
$file = file("https://www.google.com/images/srpr/logo11w.png");
// some more stuff
// define POST data
$post_data = array('somekey' => 'somevalue',
'image' => '@' . $file);
然而,无论出于何种原因,这似乎都不起作用。此外,我尝试使用'image' => '@' . file_get_contents($url)
。
看起来解决这个问题的一个方法是使用临时文件。这是解决这个问题的唯一办法吗?在任何一种情况下,我该如何解决这个问题?
不能使用任何http
url作为curl的文件路径。你必须使用本地文件。所以首先把文件下载到一个临时目录。
file_put_contents("/var/tmp/xyz/output.jpg", file_get_contents("https://www.google.com/images/srpr/logo11w.png"));
然后使用这个临时文件到你的curl:
'image' => '@/var/tmp/xyz/output.jpg'