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

时间:2014-03-29 20:52:08

标签: php file curl

我知道这是真的:

  

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

但是,我尝试使用不是本地的cURL来发布文件。它存储在其他一些URL上。我们只是说这张照片是Google's logo(它不是)。其网址为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)。再说一遍,那是行不通的。

看起来解决这个问题的方法是使用临时文件。这是解决这个问题的唯一方法吗?在任何一种情况下,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:7)

无法在curl上使用任何http网址作为文件路径。您必须使用本地文件。所以首先将文件下载到一个临时目录中。

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'