在下载正文之前处理CURL标题

Gre*_*reg 1 php curl

使用PHP和CURL(除非在这种情况下有更好的替代方案,然后是CURL),是否可以在下载文件之前让php函数处理标头响应?

例如:

我有一个脚本可以下载和处理用户提供的URL.我想添加一个检查,以便如果文件对我的进程无效(不是文本文件,太大等),则在服务器浪费时间下载文件之前,CURL请求将被取消.

更新:解决方案 PEAR类HTTP_Request2:http : //pear.php.net/package/HTTP_Request2/ 使您能够将观察者设置为连接并随时抛出异常以取消.完美适合我的需求!

Yac*_*oby 6

使用cURL,执行HTTP HEAD请求以检查标头,然后如果它有效(状态为200),则执行完整的HTTP GET请求.

您必须设置的基本选项是CURLOPT_NOBODY,将请求更改为HEAD类型

curl_setopt($ch, CURLOPT_NOBODY, true);
Run Code Online (Sandbox Code Playgroud)

然后在执行查询之后,您需要检查返回状态,这可以使用curl_getinfo()来完成

$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
Run Code Online (Sandbox Code Playgroud)


Ait*_*orF 5

我知道这是一个古老的话题,但以防人们将来会来这里.

使用CURL,您可以使用CURLOPT_WRITEFUNCTION,让您放置一个回调,一旦身体响应开始并且需要写入就会被调用.在那一刻,您可以阅读标题并取消该过程,并且不会下载正文.一站式请求.

有关更深入的外观和代码示例,请参阅PHP/Curl:在下载正文之前检查响应头