最新消息:欢迎大家来到小月博客

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

web前端 小月 5841浏览 0评论

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

 

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

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

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

<input type="file" id="fileElem" multiple accept="image/*"  onchange="handleFiles(this)">
<div id="fileList" style="width: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>

PS: :大家在用的时候有什么问题及时给我反馈,需要案例源码的直接找我要吧,不上传下载了。因为这个源码都在页面上了!祝大家学习愉快!

 

转载请注明:小月博客 » 用HTML5的File API做上传图片预览功能

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (13)

  1. 本地预览的功能喜欢
    么么哒1年前 (2016-03-04)回复
  2. 小月,求源码,多谢
    求源码1年前 (2016-03-09)回复
    • 有什么不懂的么?大部分源码都已经贴上去了?不懂的可以加我的QQ群问我!
      小月1年前 (2016-03-09)回复
  3. 预览后点击图片放大,可以删掉图片,类似QQ空间上传照片那样,如何实现
    薛建国7个月前 (10-16)回复
    • 抱歉刚看到, 这个就需要在这这个基础上功能更加复杂化了,
      小月4个月前 (01-17)回复
  4. 多图片上传这个哪里可以补充呀
    weiii6个月前 (11-29)回复
    • 现在我只会单一的图片上传,多图片上传好像有插件,可以查查
      小月4个月前 (01-17)回复
  5. 有预览效果,怎么没有上传功能啊
    想为你唱之歌3个月前 (03-07)回复
  6. 求源码,谢谢
    筱凌2个月前 (04-11)回复
    • 这个文章里面就是所有的代码了
      小月1个月前 (04-17)回复
  7. 貌似不能用吧 没有看见预览功能啊 而且报错了
    星际xx3周前 (05-05)回复
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册