javascript - 不用后台,只用js/jq/html5如何实现上传图片预览功能?
迷茫
迷茫 2017-04-10 15:57:54
[JavaScript讨论组]

不用后台,只用js/jq/html5如何实现上传图片预览功能?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(2)
阿神

https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL

ringa_lee

FileReader
html代码

<img src="" id="result" name="change-img" alt=""/>
<input type="file" id="file_input" />

js代码

    // 详情介绍页面
    var result = $("#result"); //获得最后图片显示的img
    var input = $("#file_input");

    //检测浏览器是否兼容FileReader因为这个 html5的新特性
    if (typeof FileReader === 'undefined') {
        alert("抱歉,你的浏览器不支持 FileReader");
        input[0].setAttribute('disabled', 'disabled');
        //这里加个[0]将jquery对象转化成dom对象
    } else {
        input.get(0).addEventListener('change', readFile, false);//同上
    }

    function readFile() {
        var file = this.files[0];
        if (!/image\/\w+/.test(file.type)) {
            alert("文件必须为图片!");
            return false;
        }
        var reader = new FileReader();
        reader.readAsDataURL(file);
        reader.onload = function (e) {
            result.attr("src", this.result);
        }
    }

    var result = document.getElementById("result");
    var input = document.getElementById("file_input");

    if (typeof FileReader === 'undefined') {
        result.innerHTML = "抱歉,你的浏览器不支持 FileReader";
        input.setAttribute('disabled', 'disabled');
    } else {
        input.addEventListener('change', readFile, false);
    }

    function readFile() {
        var file = this.files[0];
        if (!/image\/\w+/.test(file.type)) {
            alert("文件必须为图片!");
            return false;
        }
        var reader = new FileReader();
        reader.readAsDataURL(file);
        reader.onload = function (e) {
            result.src = this.result;
        }
    }
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号