通过input框上传图像并预览

2023-05-16

HTML 如下:

<input type="file" name="upImg">
<input type="text">
<div id="showImage">
    <img src="" alt="">
</div>

JS如下:选择图片后,显示文件名,并预览图片

$(document).on('change', 'input[name="upImg"]', function (e) {
    var fileName = this.files[0].name;
    if (fileName != '' && fileName != undefined) {
        var fileSize = 0;
        var extStart = fileName.lastIndexOf(".");
        var ext = fileName.substring(extStart, fileName.length).toUpperCase();
        //判断是否符合格式要求
        if (ext != ".PNG" && ext != ".GIF" && ext != ".JPG" && ext != ".JPEG") {
            alert("图片必须为png,gif,jpeg,jpg格式");
            $(this).val('');
            return false;
        } else {
            fileSize = this.files[0].size;
            var size = (fileSize / 1024).toFixed(2);//单位转换:kb转M
            //图片限制在20M以下
            if (size > 20480) {
                alert("图片大小不能超过20M");
                $(this).val('');
                return false;
            } else {
                var objUrl = getObjectURL(this.files[0]); //blob:http://localhost:63342/5765b9f5-f68c-47df-b043-ac8fbd74b04e
                if (objUrl) {
                    $("#showImage img").attr("src", objUrl);
                    $(this).next("input").val(fileName);
                    var src = $("#showImage img").attr("src");
                    //图片加载后, 释放对象 URL
                    $("#showImage img").on('load', function (e) {
                        removeObjectURL(src);
                    });
                }
            }
        }
    }
});

将图像源设置为表示该文件的新对象 URL(blob url)

function getObjectURL(file) {
    var url = null;
    // 处理浏览器兼容
    if (window.createObjectURL != undefined) { // basic
        url = window.createObjectURL(file);
    } else if (window.URL != undefined) { // mozilla(firefox)
        url = window.URL.createObjectURL(file);
    } else if (window.webkitURL != undefined) { // webkit or chrome
        url = window.webkitURL.createObjectURL(file);
    }
    return url;
}
释放通过URL.createObjectURL() 创建的 URL 对象。调用这个方法不会立即释放内存,只是让浏览器知道不用在内存中继续保留对这个文件的引用了,允许平台在合适的时机进行垃圾收集。
function removeObjectURL(src) {
    if (window.revokeObjectURL != undefined) { // basic
        window.revokeObjectURL(src);
    } else if (window.URL != undefined) { // mozilla(firefox)
        window.URL.revokeObjectURL(src);
    } else if (window.webkitURL != undefined) { // webkit or chrome
        window.webkitURL.revokeObjectURL(src);
    }
}

页面如下:

用于在浏览器上预览本地图片或者视频

注意:

预览视频时,将window.URL.createObjectURL生成的URL,赋给video中的src标签,没有使用source标签。像腾讯,优酷都是这么做的。

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

通过input框上传图像并预览 的相关文章

  • 在 bash 脚本中模拟用户输入[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在创建自己的 bash 脚本 但目前陷入困境 基本上 该脚本将用于在 CentOS 中自动设置服务器 某些软件通常要求用户输入密码 我希望脚本将我
  • HTML 输入值更改

    我有一个 PHP 更新页面 其中显示一个包含数据库中的值的文本字段 就是这样 并且正在工作
  • 选择输入字段中的文本,但无法编辑

    我有一个简单的文本输入字段
  • 使用 jupyter 将标准输入替换为 python3 中的字符串

    我试图用先前定义的字符串替换标准输入 在浏览堆栈溢出后 我找到了几种解决方案 尽管主要针对 python2 例如 下面的解决方案在 ideone com 中进行了测试并且似乎有效 但是当我尝试将其添加到我的 jupyter 笔记本中的代码中
  • 将 html 输入对齐在同一行

    有人可以给出一个简单的解决方案 如何将表单输入对齐在同一行上 例如 很多时候 当我构建表单时 我可以让它们彼此对齐 并且看起来不错 但是如果我将两个输入 如文本区域 文本 放在另一个文本或按钮旁边 我会得到垂直对齐差异 有没有办法解决这个问
  • 切换 Antd 表单的可见性

    当选择下拉菜单中的选项时 我需要显示某些输入 下拉菜单包含三个选项 血压 体重和温度 当用户选择一个选项时 与该选项相关的输入字段需要可见 而其余的则需要隐藏 例如 当用户选择 血压 时 收缩压和舒张压输入字段需要可见 而温度和体重字段需要
  • 如何检测浏览器的输入格式[type=date]

    使用 Javascript 如何检测日期输入字段 input type date 中的日期格式 类似的工具现代化 http modernizr com docs 仅检测使用 HTML5 日期选择器的功能 特别适合移动设备及其用于选择日期的
  • 通过类名 JQuery 获取 ID

    嗨 这是一个jquery问题 假设我有这个
  • 键盘覆盖了 webapp 中的文本输入(iOS)

    我正在开发一个网络应用程序 屏幕下半部分有两个输入字段 父视图绝对定位于屏幕 通常 人们会假设单击输入字段时 焦点会强制输入进入键盘上方的视图 但是 键盘覆盖了输入字段 如果我开始打字 则该字段中不会输入任何内容 为了在字段中输入内容 我必
  • jQuery Mobile 将下一个输入集中在按键上

    我有一个 jquery 移动网站 其 html 表单由 4 个引脚输入框组成 我希望用户能够在每个输入字段中输入 pin 而不必按 iphone 键盘的 下一步 按钮 我尝试了以下操作 虽然它似乎将焦点设置到第二个输入并插入值 但键盘消失了
  • C# 相当于 Java 的 scn.nextInt( )

    在Java中 如果我们想从控制台读取用户输入 我们可以执行以下操作 Scanner scn new Scanner System in int x x scn nextInt Receive integer input 在 C 中 我假设我
  • 类型错误:“str”对象无法使用 input() 调用[重复]

    这个问题在这里已经有答案了 我有以下代码 它应该询问用户 2 文件名 我在第二个函数中的 input 中遇到错误 但在第一个函数中没有 我不明白 这是错误 输出 getOutputFile 文件 splitRAW py 第 22 行 位于
  • 如何在maven antrun插件中执行输入任务

    我创建了一个 Maven 项目 我正在尝试运行外部脚本 在此外部脚本中 我使用 read 命令来提出问题并获得答案 如果我做一个 它会起作用sudo mvn 包 with 执行 maven 插件 http www mojohaus org
  • 检查是否有任何输入元素处于焦点

    我有一个 jquery 脚本 当按下键盘上的任意键时 它会显示一个 div 我想向脚本添加一个条件 仅当页面上没有其他输入区域 文本区域或文本字段 处于焦点时才运行脚本 这样您就可以在页面的其余部分实际键入内容 而无需显示 div docu
  • Laravel 输入:get() 不起作用

    我正在尝试在 Laravel 4 中使用 post 函数 我的表单有许多字段 在提交时 会转到控制器中的 post 函数 问题是 表单中的字段名称之间有空格 例如 Type 1 是输入的名称 中间有一个空格 现在 当我尝试通过执行以下操作来
  • 如何循环用户输入直到输入整数?

    我想运行一个交互式程序 提示用户输入学生人数 如果用户输入除整数之外的字母或其他字符 则应再次询问他们 输入学生人数 我有以下代码 public int createArrays Scanner s int size System out
  • 将 javascript 变量作为 onsubmit href 链接传递到表单/输入字段

    id 喜欢有一个输入框 用户可以在其中输入搜索词 该搜索词可能会传递给一个 javascript 函数 然后该函数将一些 url 段与搜索词组合起来 创建一个完整的 url 到目前为止 它在没有表单的情况下工作正常 但我想向其中添加一个表单
  • html() 与 innerHTML jquery/javascript 和 XSS 攻击

    我正在对我自己的代码测试 xss 攻击 下面的示例是一个简单的框 用户可以在其中输入他想要的任何内容 按 测试 后按钮 JS 会将输入字符串显示为两个 div 这是我为了更好地解释我的问题而制作的示例
  • JQuery 使用一个复选框以编程方式取消选中其他复选框

    我正在寻找一个脚本 其中一个复选框将取消选中另一个复选框 虽然有点复杂 因为所有数据都是以编程方式加载的 因此 如果未选中某个复选框 则过程将获取其 src 值 然后遍历其他输入并查找标题为 RQlevel 单击元素的 src 值的输入 并
  • R 语言 - 等待用户使用 scan 或 readline 输入

    我试图让用户输入一些关键字进行查询 在我的脚本中我使用了 scan 或 readline 我使用 R 嵌入脚本编辑器 Windows 进行了尝试 但是当我执行代码时 它使用我的下一行脚本作为标准输入 这是我的 部分 脚本 keywords

随机推荐

  • Podman 使用指南

    原文链接 xff1a Podman 使用指南 Podman 原来是 CRI O 项目的一部分 xff0c 后来被分离成一个单独的项目叫 libpod Podman 的使用体验和 Docker 类似 xff0c 不同的是 Podman 没有
  • ClickHouse查询语句详解

    ClickHouse查询语句兼容大部分SQL语法 xff0c 并且进行了更加丰富的扩展 xff0c 查询语句模板如下 xff1a WITH expr list subquery SELECT DISTINCT ON column1 colu
  • Mysql和Redis如何保证数据一致性

    文章目录 前言一 先更新数据库 xff0c 再更新redis二 先更新redis xff0c 在更新数据库三 先更新数据库 xff0c 再删除redis四 先删除redis xff0c 再更新数据库总结 前言 如何保证数据库和缓存双写一致
  • SQL——左连接(Left join)、右连接(Right join)、内连接(Inner join)

    文章目录 前言 一 概念 二 例子 总结 前言 最近在做SQL相关的练习 发现以前那么自信的SQL放久了不碰也变得棘手起来 特别是这一块表之间的内外连接 所以这篇是关于这个内外连接的整理 一 概念 首先还是介绍一下这三个的定义 1 Left
  • UCOSII之项目实战总结

    电子IT行业博大精深 xff0c 没有人能够用笔记本天天记录自己所学的知识 xff0c 于是乎 xff0c 撰写博客就成了每个 IT民工 的专长 再者 xff0c 写一篇博客 xff0c 其意义与不但记录了自己所需的知识 xff0c 更提高
  • 明白了一句话:“加速度信号对高频敏感,位移信号对低频敏感”

    以前听别人说这些 xff0c 然后记住了 但是一直不大理解 最近在调试IEPE传感器 xff0c 正好要算位移 速度 加速度 对于相同的速度 xff0c 频率越高 xff0c 加速度值就越大 因为从公式就能看出来 xff0c 对于固定频率的
  • ubuntu 16.04使用IntelRealSense D435i调用realsense ROS包时,报symbol lookup error和undefined symbol错误的解决办法

    在ubuntu 16 04使用IntelRealSense D435i调用realsense ROS包时 xff0c 运行 roscore roslaunch realsense2 camera rs rgbd launch 出现错误 xf
  • Android浪潮

    Google的Android手机就要席卷世界了 xff01 IT技术的发展常常太出人意料 xff0c 我也想不太清楚Google的Android平台究竟吸引人在哪里 xff0c 但我相信Android会很快改变手机平台的格局 新的形势会出人
  • 卡尔曼滤波相关介绍及优缺点

    1 卡尔曼滤波算法为什么会叫滤波算法 xff1f 以一维卡尔曼滤波为例 xff0c 如果我们单纯的相信测量的信号 xff0c 那么这个信号是包含噪声的 xff0c 是很毛糙的 xff0c 但是当我们运行卡尔曼滤波算法去做估计 xff0c 我
  • STM32单片机(五)-寄存器地址理解和控制LED闪烁

    芯片 xff1a stm32f103zet6 1 存储单元一般应具有存储数据和读写数据的功能 一般以8位二进制作为一个存储单元 也就是一个字节 每个单元有一个地址 是一个整数编码 可以表示为二进制整数 2 stm32是32位单片机 xff0
  • 跨平台构建 Docker 镜像新姿势,x86、arm 一把梭

    点击 34 阅读原文 34 可以获得更好的阅读体验 在工作和生活中 xff0c 我们可能经常需要将某个程序跑在不同的 CPU 架构上 xff0c 比如让某些不可描述的软件运行在树莓派或嵌入式路由器设备上 特别是 Docker 席卷全球之后
  • 正点原子STM32F4笔记

    使用寄存器操作 xff0c 不错的博客 xff1a https blog csdn net w471176877 article category 1230060 https blog csdn net w471176877 article
  • JAVA中this用法小结

    我知道很多朋友都和我一样 xff1a 在 JAVA 程序中似乎经常见到 this xff0c 自己也偶尔用到它 xff0c 但是到底 this 该怎么用 xff0c 却心中无数 xff01 很多人一提起它 xff0c 就说 当前对象 xff
  • Linux Platform总线+SPI总线分析

    2015 07 1 11 20 本文以MPC8308 powerpc架构 xff0c HX软件包为依据 xff0c 详细内容可参考源码 CPU e300c3MPC8308 400MHz BOARD Freescale MPC8308ERDB
  • ubuntu下SD卡分区与挂载

    本来只是想借SD卡来做一个OK6410的升级 但笔记本上只装了ubuntu xff0c 一开始是可以识别sd卡的 xff0c 但按照网上的教程不小心将 dev sdb1删除了 导致ubuntu不能识别sd卡了 记录一下解决过程 1 sd的设
  • 信号量与互斥锁的一些理解

    一直对信号量和互斥锁只有一个模糊的认识 xff0c 今天特别学习了 xff0c 总结一下 一 从作用上来讲 互斥锁是用在多线程多任务互斥的 信号量用于线程的同步 二 从原理上讲 线程互斥锁 pthread mutex t 的实现原理 xff
  • springboot2.x +kafka使用和源码分析九(KafkaListenerEndpointRegistry暂停启动容器)

    我们在运行中如果需要暂停启动容器时可以通过此类KafkaListenerEndpointRegistry来处理 KafkaListenerEndpointRegistry源码 只解释了核心代码 public class KafkaListe
  • H3C 交换机配置命令

    H3C 交换机配置命令 三层和二层交换机配置命令 dis this 查看下属命令 save 保存 reboot 重启 初始化命令和提示选项 reset saved configuration 初始 清除所有配置信息后 提示是否初始化 xff
  • 【粒子群算法整定PID参数】MATLAB2016b(02一些细节问题)

    此帖主要针对01帖的细节方面 很抱歉更新的晚了 xff0c 现在我对01帖发布到现在 xff0c 用粒子群算法整定PID参数时存在的细节问题进行讲解 xff0c 以便于帮助大家学会此方法 xff0c 降低整定参数的难度 问题一 xff1a
  • 通过input框上传图像并预览

    HTML 如下 xff1a lt input type 61 34 file 34 name 61 34 upImg 34 gt lt input type 61 34 text 34 gt lt div id 61 34 showImag