我试图检查远程网址上是否存在图片。
到目前为止我所拥有的:
Validator::extend('valid_img_url', function ($attribute, $value, $parameters, $validator) {
$handle = curl_init($value);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($handle);
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
if($httpCode >= 200 && $httpCode <= 400) {
return getimagesize($value) !== false;
}
});
如果给定的远程URL是例如https://website.com
,它将正常工作。但是,当给定的远程网址为website.com
而没有http
或https
时,我收到此错误getimagesize(website.com): failed to open stream: No such file or directory
。
如何解决此问题?感谢任何帮助,谢谢!
答案 0 :(得分:1)
您可以将其合并为一个步骤,而不是分两步检查辅助功能和图像大小:
getimageSize
要使用Validator::extend('valid_img_url', function ($attribute, $value, $parameters, $validator) {
$handle = curl_init($value);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($handle);
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
if($httpCode >= 200 && $httpCode <= 400) {
if (!preg_match("~^(?:f|ht)tps?://~i", $value)) {
$value = "http://" . $value;
}
return getimagesize($value) !== false;
}
});
的力量,您可以添加以下代码:
http
如果没有人,则会添加缺失的$('#form_model').keyup(function(event) {
var newText = event.target.value;
newText = newText.replace(" ", "-");
$('#form_image').val(newText+".png");
});
。但请记住,如果只能通过https访问网址而不进行任何重定向,则可能会产生错误。