使用cURL保存图像

问题描述 投票:0回答:1

我有一些指向类似图片的网址:

https://www.somesite.com/some/dir/jsp/data.jsp?KEY=12155&TYPE=jpg&qi=R7SWtM5F5PL4cDDFfdfpIrqIWSY3gr2XGQg=

如果在这样的终端命令行中使用curl,则会得到图像:

/usr/bin/curl -o 1234.jpg 'the_url_to_image'

我需要在带有选项的php代码中使用cURL。我尝试了几个参数来获取图像,并始终出现403错误

禁止访问指定的资源。 Apache Tomcat

我的参数(只有cURL参数,用于将图像写入文件的代码不在这里:

 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $img_url);
 curl_setopt($ch, CURLOPT_VERBOSE, 1);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_AUTOREFERER, false);
 curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
 curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36');
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
 curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie_filename);
 curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie_filename);
 $page_content  = curl_exec($ch);
 curl_close($ch);

编辑

如果我将图像网址提供给在线卷曲页面,例如

onlinecurl.com

我获得了图像二进制文件,而不是错误消息。

因此可以使用curl保存图像,我只需要正确设置curl_setopt设置即可。

php libcurl
1个回答
0
投票

您可以尝试添加

curl_setopt($ch, CURLOPT_POST, 0);

如果这不起作用,则必须添加Apache Tomcat在您的web.xml中:

<login-config> <auth-method>BASIC</auth-method> </login-config>

© www.soinside.com 2019 - 2024. All rights reserved.