用HTML5的File API做上传图片预览功能
前几天做了一个项目,涉及到上传本地图片的功能,正好之前了解过 移动端完全支持哦!已测试。
下面给大家看看代码吧怎么实现的
第一:HTLM部分(这里不去做漂亮的样式了我们注重学习功能)
注:如果想写成很漂亮的那种上传按钮,告诉大家我的写法就是模拟上传,即在input下面决定定位一张图片(上传按钮),input的宽高和图片色值一样大小,透明度为0 ,最后别忘记涉及z-index的顺序。
第二:JS利用H5新功能处理上传
Js实现图片上传前的预览功能,主要是使用html5 的Files API实现,ie可兼容部分功能,在火狐和chrome下正常运行。HTML5的 file input标签支持multiple 和 accept ,前一个属性可控制多文件选择,后一个控制上传的文件类型。预了解更多关于File API的资料,有自己查下。
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.οnlοad=function(){
alert(nfile+","+img.fileSize + " bytes");
}
fileList.appendChild(img);
}
}
PS: :大家在用的时候有什么问题及时给我反馈,需要案例源码的直接找我要吧,不上传下载了。因为这个源码都在页面上了!祝大家学习愉快!