自定义 input file 样式及 js 上传图片本地预览

news/2024/7/19 14:45:29 标签: js, html, html5, javascript, 前端

效果图

自定义 input file 效果预览

使用说明

复制代码,保存为 html 格式后,直接用浏览器打开即可。

代码

html" title=js>js"><!DOCTYPE html>
<html lang="zh-cn">
    <head>
        <title>自定义 input file 样式及 html" title=js>js 上传图片本地预览</title>
        <!-- 图标字体库 -->
        <link href="http://netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
        <style type="text/css">
            .file {
                position: relative;
                display: inline-block;
                height: 30px;
                line-height: 30px;
                padding: 0 10px;
                background-color: #009688;
                color: #fff;
                white-space: nowrap;
                text-align: center;
                font-size: 15px;
                border: none;
                border-radius: 2px;
                cursor: pointer;
                vertical-align: middle;
            }

            .file input {
                position: absolute;
                font-size: 100px;
                right: 0;
                top: 0;
                bottom: 0;
                opacity: 0;
            }

            .file:hover {
                opacity:.8;
                filter:alpha(opacity=80);
                color:#fff
            }

            .file:active {
                opacity:1;
                filter:alpha(opacity=100)
            }
        </style>
    </head>
    <body>

        <div id="preview_image" style="padding: 10px 0;"><i class="fa fa-file-image-o" style="font-size: 120px;"></i></div>
        <div class="file">
            <i class="fa fa-cloud-upload fa-lg"></i> 上传图片
            <input name="thumb" type="file" onchange="preview_image(this, 'preview_image')" multiple="multiple">
        </div>

    </body>
    <script type="text/javascript">
        /**
         * 图片上传预览功能
         *
         * @param     file   file           上传的文件
         * @param     string preview_image  上传图片预览id
         */
        function preview_image(file, preview_image) {

            var tip = "仅允许 jpg、png 和 gif 格式图片上传!"; // 提示信息
            var filters = {
                "jpeg": "/9j/4",
                "gif": "R0lGOD",
                "png": "iVBORw"
            }

            var prvbox = document.getElementById(preview_image);
            prvbox.innerHTML = "";
            if (window.FileReader) { // html5方案

                for (var i = 0, f; f = file.files[i]; i++) {

                    var fr = new FileReader();
                    fr.onload = function(e) {

                        var src = e.target.result;
                        if (!validate_image(src)) {
                            alert(tip)
                        }
                        else {
                            show_preview_image(src);
                        }
                    }
                    fr.readAsDataURL(f);
                }
            }
            else { // 降级处理

                if (!/\.jpg$|\.png$|\.gif$/i.test(file.value)) {
                    alert(tip);
                }
                else {
                    show_preview_image(file.value);
                }
            }

            function validate_image(data) {

                var pos = data.indexOf(",") + 1;
                for (var e in filters) {
                    if (data.indexOf(filters[e]) === pos) {
                        return e;
                    }
                }

                return null;
            }

            function show_preview_image(src) {

                var img = document.createElement("img");
                img.src = src;
                prvbox.appendChild(img);
            }
        }
    </script>
</html>


http://www.niftyadmin.cn/n/1230109.html

相关文章

软件设计是决定软件性能的关键

大家更多的是关注测试工具&#xff0c;测试技巧&#xff0c;而少有人去从根本上来分析、测试软件。一个优秀的软件性能测试工程师要具有宏观和微观的软件测试观。他要分析软件的架构&#xff0c;了解软件的运行模式&#xff0c;了解通讯协议&#xff0c;更是一个软件开发高手。…

linux-scp 上传 下载 文件 文件夹

下载文件 # scp 用户名服务器IP:/被下载文件的路径 /保存下载文件的路径 scp biaowong106.38.223.146:/www/project/file.py /home/biaowong/scp_files上传文件 # scp /被上传文件的路径 用户名服务器IP:/上传文件保存路径 scp /home/biaowong/scp_files/file.py biaowong106…

DirectFB运行机制介绍

<meta http-equiv"content-type" content"text/html;charsetUTF-8"> DirectFB运行机制介绍 转载时请注明出处和作者联系方式 作者联系方式&#xff1a;李先静 <xianjimli at hotmail dot com>事实上我对DirectFB的理解是比较肤浅的&#xff0c…

linux samba 搭建与权限配置(账号隔离)

需求说明 管理员账号能管理所有文件夹&#xff1b;职员账号能管理自己的文件夹、公共文件夹及访客文件夹&#xff1b;访客仅能管理访客文件夹;没有权限访问的文件夹则不显示(账号隔离); 账号设定 admin&#xff1a;管理员账户&#xff1b;zhangshan&#xff1a;职员账号&…

Linux zip 压缩 解压缩

简单的压缩、解压缩 # 压缩文件 zip test.zip test.log # 压缩文件夹 zip -r test.zip test # 解压缩 unzip test.zip使用实例 zip unzip 安装 # CentOS 安装 sudo yum install -y zip unzip # Ubuntu & Debian 安装 sudo apt install -y zip unzipzip 压缩文件 压缩单个…

在Win32下建立GTK开发环境

在Win32下建立GTK开发环境 转载时请注明出处和作者联系方式 作者联系方式&#xff1a;李先静 <xianjimli at hotmail dot com> 这几天在写一个生产下载工具&#xff0c;产线上的工人习惯用Win32下的图形用户界面工具&#xff0c;自然要满足这个要求才行。但我也不想再去…

Linux crontab 定时任务

介绍 在我们日常工作中&#xff0c;经常会用到 crontab 去处理一些定时任务。如&#xff1a;定时备份数据库、会员积分过期清除等。通过 crontab 命令&#xff0c;我们可以按照我们不同的需求执行不同的定时任务。 格式说明 Linux * * * * * * - - - …

用 JOTM 向Servlet中添加事务

J2EE 除了提供了 servlet 之外&#xff0c;还提供了大量的其它功能。Servlet 开发者们也许难得使用这些功能&#xff0c;不情愿也没有时间用一个超出所需的大型 J2EE 服务器来替换自己的简单的 servlet。然而&#xff0c;依据J2EE 的模块化特征&#xff0c;有可能将负责特定 J2…