我知道这是真的:
...您可以通过在文件路径前加上"@"来发布文件系统中已有的文件.
但是,我正在尝试使用不是本地的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)
.再次,这不起作用.
看起来解决这个问题的方法是使用临时文件.这是解决这个问题的唯一方法吗?在任何一种情况下,我该如何解决这个问题?
您不能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)