$camera_ip = "10.10.10.10";
$image_url = "http://$camera_ip/cgi-bin/image.jpg?camera=right&size=1024x768&quality=60";
$ch = curl_init($image_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$rawdata = curl_exec($ch);
curl_close($ch);
$fp = fopen('./logo.jpg', 'wb');
fwrite($fp, $rawdata);
fclose($fp);
一个文件保存在7KB
上,但大小为0x0
...我无法弄清楚为什么未正确保存文件。我的猜测是在保存之前没有完全加载该文件,但是是否有一种方法来确保?
尝试使用" W"而不是" WB" $fp = fopen('./logo.jpg', 'w');
或尝试:file_put_contents('./logo.jpg',$rawdata);
(不确定它是二进制安全的,应该是)
和
检查您的卷曲结果以查看发生了什么。
$info = var_export(curl_getinfo($ch),true);
file_put_contents('log.txt',$info);
或
header('content-type: text/plain');
var_export(curl_getinfo($ch));
更新
卷曲请求失败(返回false)。
现在您需要找出原因。
现在更改您的:
curl_setopt($ch, CURLOPT_HEADER, 0);
to:
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
添加这些选项以进行故障拍摄:
curl_setopt($ch, CURLOPT_ENCODING,"");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT,10);
curl_setopt($ch, CURLOPT_FAILONERROR,true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$data = curl_exec($ch);
if (curl_errno($ch)){
echo ' Retrieve Base Page Error: ' . curl_error($ch);
}
else {
$info = rawurldecode(var_export(curl_getinfo($ch),true));
$skip = intval(curl_getinfo($ch, CURLINFO_HEADER_SIZE));
$responseHeader= substr($data,0,$skip);
$data= substr($data,$skip);
echo "HEADER: $responseHeadern";
echo "nnINFO: $infonnDATA: $data";
}
您可能会得到"检索基本页面错误:",但它也会说明为什么失败了。如果您无法回声,请用echo
替换$info .=