我有一个通过Android IP Camera App的网络摄像头。我正在写一个PHP脚本在温度传感器上执行OCR来读取数字并在超过特定温度时发出警告。我想通过cam的IP获取的URL是一个shot.jpg,但是网络摄像头有一个授权的用户名和密码:basic。我能够通过第一种方法完成身份验证,但它只输出大量的随机字符。第二种方法加载图片,但src不正确。关于如何使用内容类型正确格式化第一种方法的任何建议都会令人惊讶。感谢
//METHOD 1
$context = stream_context_create(array(
'http' => array('header' => "Authorization: Basic " . base64_encode("$username:$password"))
));
$data = file_get_contents($url, false, $context);
echo $data;
//METHOD NUMBER 2
header('Authorization: Basic' . base64_encode("$username:$password"));
header('Content-Type: image/jpg');
$data = file_get_contents($url, false);
echo $data;
答案 0 :(得分:2)
您未在示例1中输出正确的Content-Type:
。file_get_contents
未将其传递出去。因此,假设它是一个HTML页面,图像将被发送到浏览器。
这样:
$data = file_get_contents($url, false, $context);
header('Content-Type: image/jpg');
echo $data;
此外,请尝试curl
(也支持HTTP),以简化登录凭据的使用。
在您的第二个示例中,您正在使用页面响应header()
。 Authorization:
行不会通过file_get_contents()网址请求传递。