大家五一玩的愉快吗?都去哪里玩了?听说杭州西湖的音乐喷泉很美聚集了5W人啊。但是呢只喷了一次… …  不知道去得小伙伴有没有被气晕呢。过节出去玩真心不是什么好的选择。还是我比较明智哈哈。。。哪里也不去天天吃大餐!!!

好久没有跟大家更新文章了,好多小伙伴问我很忙吗,其实真心的抱歉我不忙,但是一直不知道给大家分享些什么。小伙伴们如果你们有什么好的经验或者案例可不要吝啬哦,记得找我来分享给大家。真心话个人的力量实在有限。小月在这里真心希望大家有能力的一定要分享出来了哦,让我们大家一起来学习。(欢迎踊跃投稿哦。)

废话不多说了今天给大家分享一个上周我做的一个图片上传的案例吧。之前一直用的angular写的《用HTML5的File API做上传图片预览能》。今天摒弃angular的东西分享一个html5 + js 图片上传案例。那么今天还是按照一定的步骤来讲吧。

HTML

第一步创建html,我们在页面中放置一个文件选择的input#upload(PS:偷懒一下,这里就不再次写案例了直接复制的我们的页面)

 <div class="con4">
     <span class="btn upload">上传<input type="file" class="upload_pic" id="upload" /></span>
 </div>

CSS

注:css 写的有些乱哈,看不懂的可以问我,或者直接自己写一下就ok。

.con4{
     width: 80%;
     height: auto;
     overflow: hidden;
     margin: 15% auto 0 auto;
     color: #FFFFFF;}.con4 .btn{
     width: 45%;
     height: 40px;
     line-height: 40px;
     text-align: center;
     background: #d8b49c;
     display: block;
     font-size: 16px;
     border-radius: 5px;}.upload{
     float: left;
     position: relative;}.upload_pic{
     display: block;
     width: 100%;
     height: 40px;
     position: absolute;
     left: 0;
     top: 0;
     opacity: 0;
     border-radius: 5px;}

Javascript

通过getElementById获取节点,判断浏览器的兼容性,对于不支持FileReader接口的浏览器将给出一个提示并禁用input,否则监听input的change事件。

//获取上传按钮var input1 = document.getElementById("upload"); 
 if(typeof FileReader==='undefined'){ 
     //result.innerHTML = "抱歉,你的浏览器不支持 FileReader"; 
     input1.setAttribute('disabled','disabled'); }else{ 
     input1.addEventListener('change',readFile,false); }

然后,当file_input的change事件触发时,调用函数readFile()。在readFile中,我们首先获取file对象,然后通过file的type属性来检测文件类型,我们当然只允许选择图像类型的文件,然后我们new一个FileReader实例,并调用readAsDataURL方法来读取选中的图像文件,最后在onload事件中,获取到成功读取的文件内容,并以插入一个img节点的方式显示选中的图片。

function readFile(){ 
     var file = this.files[0]; 
     if(!/image\/\w+/.test(file.type)){ 
         alert("文件必须为图片!"); 
         return false; 
     } 
     var reader = new FileReader(); 
     reader.readAsDataURL(file); 
     //当文件读取成功便可以调取上传的接口,想传哪里传哪里(PS: 你们可以把你们的靓照偷偷发给我!)
     reader.onload = function(e){ 
         var data = this.result.split(',');
         var tp = (file.type == 'image/png')? 'png': 'jpg';
         var a = data[1];
         //需要上传到服务器的在这里可以进行ajax请求
         ... ...
     }};

写到这里我们已经完成了图片上传的功能了,大家有兴趣的自己动手尝试一下,不懂的地方或者我写错的地方一定要找我哦。