zoukankan      html  css  js  c++  java
  • 用HTML5的File API做上传图片预览功能

    用HTML5的File API做上传图片预览功能

    前几天做了一个项目,涉及到上传本地图片的功能,正好之前了解过 html5 可以上传本地图片,然后再网上看了一些demo结合自己的需求,终于搞定了。(PS : 不得不承认我这个人有多懒,没有需求的时候我向来不主动去学习)。移动端完全支持哦!已测试。

    下面给大家看看代码吧怎么实现的

    第一:HTLM部分(这里不去做漂亮的样式了我们注重学习功能)

    <input type="file" id="fileElem" multiple accept="image/*"  onchange="handleFiles(this)">
    <div id="fileList" style="200px;height:200px;"></div>

    注:如果想写成很漂亮的那种上传按钮,告诉大家我的写法就是模拟上传,即在input下面决定定位一张图片(上传按钮),input的宽高和图片色值一样大小,透明度为0 ,最后别忘记涉及z-index的顺序。

    第二:JS利用H5新功能处理上传

    Js实现图片上传前的预览功能,主要是使用html5 的 Files API 实现,ie可兼容部分功能,在火狐和chrome下正常运行。HTML5的 file input标签支持multiple 和 accept ,前一个属性可控制多文件选择,后一个控制上传的文件类型。预了解更多关于File API的资料,有自己查下。

    <script>
        window.URL = window.URL || window.webkitURL;
        var fileElem = document.getElementById("fileElem"),
        fileList = document.getElementById("fileList");
        function handleFiles(obj) {
            var files = obj.files,
            img = new Image();
            if(window.URL){
                //File API
                alert(files[0].name + "," + files[0].size + " bytes");
                img.src = window.URL.createObjectURL(files[0]); //创建一个object URL,并不是你的本地路径
                img.width = 200;
                img.onload = function(e) {
                    window.URL.revokeObjectURL(this.src); //图片加载后,释放object URL
                }
                fileList.appendChild(img);
            }else if(window.FileReader){
                //opera不支持createObjectURL/revokeObjectURL方法。我们用FileReader对象来处理
                var reader = new FileReader();
                reader.readAsDataURL(files[0]);
                reader.onload = function(e){
                    alert(files[0].name + "," +e.total + " bytes");
                    img.src = this.result;
                    img.width = 200;
                    fileList.appendChild(img);
                }
            }else{
                //ie
                obj.select();
                obj.blur();
                var nfile = document.selection.createRange().text;
                document.selection.empty();
                img.src = nfile;
                img.width = 200;
                img.onload=function(){
                    alert(nfile+","+img.fileSize + " bytes");
                }
                fileList.appendChild(img);
            }
        }
    </script>
  • 相关阅读:
    FCM模糊c均值聚类
    Iris数据集免费下载
    matlab 信息增益函数 入侵检测kudcupp
    KNN分类算法的实现
    Git远程仓库地址变更本地如何修改
    浅析 UART、RS232、TTL 之间的关系(转)
    编译某一个ko模块make modules SUBDIRS=drivers/xxx/
    Linux系统调用之SYSCALL_DEFINE(转)
    【TCP/IP详解】TCP保活机制(转)
    linux cpu、内存、IO、网络的测试工具(转)
  • 原文地址:https://www.cnblogs.com/qjyking/p/5769352.html
Copyright © 2011-2022 走看看