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

hic*_*123 11 php curl file

我知道这是真的:

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

但是,我正在尝试使用不是本地的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);
Run Code Online (Sandbox Code Playgroud)

但是,无论出于何种原因,这似乎都不起作用.另外,我试过用'image' => '@' . file_get_contents($url).再次,这不起作用.

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

Sab*_*san 8

不能http在curl中使用任何URL作为文件路径.您必须使用本地文件.首先将文件下载到临时目录中.

file_put_contents("/var/tmp/xyz/output.jpg", file_get_contents("https://www.google.com/images/srpr/logo11w.png"));
Run Code Online (Sandbox Code Playgroud)

然后将此临时文件用于您的curl:

'image' => '@/var/tmp/xyz/output.jpg'
Run Code Online (Sandbox Code Playgroud)

  • 它不会自动删除.下次调用它时会自动覆盖.但是在程序结束的那天结束时,您可以根据需要删除它. (3认同)