使用或不使用http / https检查远程URL上是否存在图像

时间:2017-09-12 08:29:08

标签: php laravel

我试图检查远程网址上是否存在图片。

到目前为止我所拥有的:

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而没有httphttps时,我收到此错误getimagesize(website.com): failed to open stream: No such file or directory

如何解决此问题?感谢任何帮助,谢谢!

1 个答案:

答案 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访问网址而不进行任何重定向,则可能会产生错误。