如何将 cURL 的"@"语法与远程 URL 一起使用?



我知道这是真的:

…您可以通过在文件路径前加上"@"来发布已经在文件系统上的文件。

然而,我试图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'

相关内容

  • 没有找到相关文章

最新更新