JavaScript 图像 URL 验证

2023-12-07

我需要验证图像 url 以检查该 url 是否是以下任何扩展名的图像:- jpeg、jpg、gif、png。示例:- 当我们验证此 url 时http://www.example.com/asdf.jpg它应该给我们真正的价值和像这样的网址http://www.example.com/asdf.php应该返回 false。我们如何在 javascript 中做到这一点,而且我想检查 url 的内容类型。这样我们就可以判断 url 是否是图像。


您可以使用这样的正则表达式来检查文件扩展名:

function checkURL(url) {
    return(url.match(/\.(jpeg|jpg|gif|png)$/) != null);
}

这会检查 url 是否以这四个扩展名中的任何一个结尾。

我知道客户端中的 javascript 无法验证与网页不在同一域中的 URL 的内容类型,因为您无法在网页域之外使用 ajax。据我所知,您必须将 URL 发送到服务器进程并让它下载图像,获取内容类型并将其返回给您。

但是,您可以使用如下函数检查图像标签是否可以加载 URL:

function testImage(url, callback, timeout) {
    timeout = timeout || 5000;
    var timedOut = false, timer;
    var img = new Image();
    img.onerror = img.onabort = function() {
        if (!timedOut) {
            clearTimeout(timer);
            callback(url, "error");
        }
    };
    img.onload = function() {
        if (!timedOut) {
            clearTimeout(timer);
            callback(url, "success");
        }
    };
    img.src = url;
    timer = setTimeout(function() {
        timedOut = true;
        // reset .src to invalid URL so it stops previous
        // loading, but doesn't trigger new load
        img.src = "//!!!!/test.jpg";
        callback(url, "timeout");
    }, timeout); 
}

该函数将在将来的某个时间使用两个参数调用您的回调:原始 URL 和结果(“成功”、“错误”或“超时”)。您可以在多个 URL 上看到这项工作,有些好,有些不好,在这里:http://jsfiddle.net/jfriend00/qKtra/


而且,由于现在是 Promise 的时代,因此这里有一个返回 Promise 的版本:

function testImage(url, timeoutT) {
    return new Promise(function (resolve, reject) {
        var timeout = timeoutT || 5000;
        var timer, img = new Image();
        img.onerror = img.onabort = function () {
            clearTimeout(timer);
            reject("error");
        };
        img.onload = function () {
            clearTimeout(timer);
            resolve("success");
        };
        timer = setTimeout(function () {
            // reset .src to invalid URL so it stops previous
            // loading, but doesn't trigger new load
            img.src = "//!!!!/test.jpg";
            reject("timeout");
        }, timeout);
        img.src = url;
    });
}

还有一个 jsFiddle 演示:http://jsfiddle.net/jfriend00/vhtzghkd/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 图像 URL 验证 的相关文章

随机推荐

  • 未捕获的类型错误:无法读取 ReactJs 中 {Component}.render 处未定义的属性“映射”

    我将我的数组传递给这样的侧边栏组件的道具 我想在我的子组件中访问它 When i save the code and go to browser i am getting this error message import React Co
  • 如何在java中创建类型安全的泛型数组?

    我想在 java 中创建一个通用数组 维护 Java 通常提供的类型安全性 我正在使用这段代码 class Stack
  • “of”与“from”运算符

    之间唯一的区别是Observable of and Observable from参数格式 像Function prototype call and Function prototype apply Observable of 1 2 3
  • 1帧内使用opengl es在ipad上最多可以绘制多少个三角形?

    ipad上一帧最多可以画多少个三角形 另外 用于绘制这些三角形的 gl 调用数量是否有限制 您在 iPad 上遇到的三角形总数的唯一限制是内存大小以及您希望渲染的速度 发送的顶点越多 应用程序将使用的内存就越多 渲染速度就越慢 例如 在我的
  • utf8' 编解码器无法解码位置 15 中的字节 0x89:起始字节无效

    这是我的项目的视图 其中我尝试使用 boto 将图像从本地系统上传到 s3 class ImageList generics ListCreateAPIView queryset Image objects all serializer c
  • 如何在gem5中启用ARM半主机?

    我尝试运行在 QEMU 上运行的半主机退出指令 mov r0 0x18 ldr r1 0x20026 svc 0x00123456 但是gem5似乎没有正确处理它并崩溃了 以下补丁将其添加到 baremetal py 但不添加到 fs py
  • jquery改变用户滚动的背景颜色

    jquery 是否有可能在用户向下滚动页面时背景动画从 50 白色变为 90 白色或其他 所以首先是颜色rgba 255 255 255 5 当用户滚动到颜色下方 210px 时become rgba 255 255 255 9 更新后的更
  • Darwin/MacOS 是否修改了 Bash?

    我想知道使用 Bash 内置命令的 Bash 脚本的可移植性 据我了解 每种 UNIX 风格都倾向于修改各种 UNIX 实用程序 但他们是否倾向于不理睬 Bash 和 Bash 内置函数呢 尤其是 MacOS 呢 据我所知 bash 在 M
  • 从 C++ 扩展中获取 MIME 类型

    有什么方法可以在给定文件扩展名的情况下获取 C 中的 MIME 类型吗 我读过有关 HKEY CLASSES ROOT 的内容 但老实说我不知道 如何使用它 我想要的是作为输入 string extension pdf string ext
  • SWT 是否分发可在任何受支持的操作系统上运行的 JAR?

    The SWT项目目前为每个受支持的操作系统维护一个可分发的版本 例如 swt 3 4 2 win32 win32 x86 zip swt 3 4 2 gtk linux x86 zip swt 3 4 2 carbon macosx zi
  • EF 6 - 如何正确执行并行查询

    创建报告时 我必须执行 3 个涉及相同上下文的独立实体的查询 因为它们很重 所以我决定使用 ToListAsync 为了让它们并行运行 但是 令我惊讶的是 我得到了一个例外 使用 EF 6 并行执行查询的正确方法是什么 我应该手动启动新任务
  • 为什么使用 LWUIT 的三星手机不支持阿拉伯字体?

    我已经在一些三星手机上测试了我的移动应用程序以进行测试 三星 Corby b3410 和三星 c6712 这些手机上未显示阿拉伯字体 但它可以在诺基亚手机上正常工作 我在用着System font用于显示阿拉伯字体 为什么这些手机不支持 如
  • Latin-1 / UTF-8 编码 php

    我有一个 UTF 8 编码与 Latin 1 混合的数据库 我认为这就是问题所在 这就是字符在数据库中的样子 should be 当我将标题设置为 然后字符就出来了 当我删除标题时 它们会像数据库中一样出现 我希望他们像这样出来 如果可能的
  • Core Haskell 将类型应用于函数意味着什么?

    我为 Core Haskell 编写了一个自定义的漂亮打印机 以便更好地研究 Core 的结构 这台漂亮打印机的要点是 它需要核心模块并在输出中包含数据构造函数 默认情况下Outputable执行好像不行 这是我运行漂亮打印机的模块的代码
  • 如何将多域用户电子邮件添加到 Azure AD

    我们有三个不同的网站 我们希望使用 Azure AD 来实现单点登录 我的问题是如何将可能拥有不同电子邮件地址的用户添加到 Azure AD 通过 API 例如 电子邮件受保护 电子邮件受保护 电子邮件受保护 etc 当我尝试通过 API
  • 如何在 Eclipse 编辑器中打开外部浏览器

    如何以编程方式使用 Eclipse 插件中的打开选项打开 Safari 等外部浏览器 try PlatformUI getWorkbench getBrowserSupport getExternalBrowser openURL new
  • 使用 PHP 创建 Web 服务

    我想用 PHP 创建一个可供不同消费者 网页 Android 设备 iOS 设备 使用的 Web 服务 我来自 Microsoft 背景 因此对如何使用 C 等进行操作很满意 理想情况下 我希望能够提供可以发送 JSON 的 REST 服务
  • 如何使用 React 导航在 mobx 商店中导航?

    我可以用this props navigation从屏幕组件进行导航 我应该如何在 mobx 存储文件中执行类似操作 或者我应该在商店中进行导航吗 我读了无需导航道具即可导航文章 但它似乎只适用于屏幕组件 对吗 有人说用global变量来存
  • 具有选择类的语义 UI 多级下拉列表不会展开

    当我尝试使用下拉菜单时search selection并选择一个子类别 它会展开到自身中 并且下拉列表中会出现一个小滚动条 如果我不添加search selection它似乎运行得很好 JSFiddle https jsfiddle net
  • JavaScript 图像 URL 验证

    我需要验证图像 url 以检查该 url 是否是以下任何扩展名的图像 jpeg jpg gif png 示例 当我们验证此 url 时http www example com asdf jpg它应该给我们真正的价值和像这样的网址http w