在博客园注册帐号有些天了,感受有些许欣慰,本身写的东西有人在看,有人在评论非常开心。(ps: 知足一下虚荣心吧!)css
废话很少说了,说一下今天给你们分享的是 html5上传图片。咱们是在移动端使用的,可是这个在pc上也通用兼容性我只在谷歌测试过。以前一直用的angular写的《用HTML5的File API作上传图片预览能》。今天摒弃angular的东西分享一个html5 + js 图片上传案例。那么今天仍是按照必定的步骤来说吧。html
HTML 上传图片html5
第一步建立html,咱们在页面中放置一个文件选择的input#upload(PS:偷懒一下,这里就再也不次写案例了直接复制的咱们的页面)ajax
<div class="con4"> <span class="btn upload">上传<input type="file" class="upload_pic" id="upload" /></span> </div>
注: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; }
经过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请求 ... ... } };
写到这里咱们已经完成了图片上传的功能了,你们有兴趣的本身动手尝试一下,不懂的地方或者我写错的地方必定要找我哦。函数
参数/事件 | 描述 |
方法 | |
abort | 中断读取 |
readAsText(file, [encoding]) | 将文件读取为文本 该方法有两个参数,其中第二个参数是文本的编码方式,默认值为 UTF-8。这个方法很是容易理解,将文件以文本方式读取,读取的结果便是这个文本文件中的内容。 |
readAsBinaryString(file) | 将文件读取二进制码 一般咱们将它传送到后端,后端能够经过这段字符串存储文件 |
readAsDataURL(file) | 将文件读取为DataURL 将文件读取为一串Data URL字符串,将小文件以一种特殊格式的URL地址直接读入页面。小文件指图像与html等格式的文件。 |
事件 | |
onabort | 数据读取中断时触发 |
onerror | 数据读取出错时触发 |
onloadstart | 数据读取开始时触发 |
onload | 数据读取成功完成时触发 |
onloadend | 数据读取完成时触发,不管成功失败 |
祝你们学习愉快!终于写完了估计仍是有错别字的。你们有不一样看法的记得给我留言哦![小月博客]学习