最近项目中需要实现一个上传预览功能,于是写了要给小demo,由于并不复杂就直接上代码了。
实现图片预览功能的三个重点:
1.file标签有一个files的属性,docObj.files[0];(即上传的文件)
2.window.URL.createObjectURL(files[0]);
3.window.URL.revokeObjectURL(img.src);
html结构:
<input type="file" name="file" style="width: 200px; height: 20px;" οnchange="handleFiles(this)" id="upload" />
<div id="append"></div>
<div id="imgPreview"></div>
JS部分:
window.URL = window.URL || window.webkitURL;
append = document.getElementById("append");
function handleFiles(obj) {
console.log(obj)
var files = obj.files,
img = new Image();
if(window.URL){
//File API
console.log(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
}
append.appendChild(img);
}else if(window.FileReader){
//opera不支持createObjectURL/revokeObjectURL方法。我们用FileReader对象来处理
var reader = new FileReader();
reader.readAsDataURL(files[0]);
reader.onload = function(e){
console.log(files[0].name + "," +e.total + " bytes");
img.src = this.result;
img.width = 200;
append.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(){
console.log(nfile+","+img.fileSize + " bytes");
}
append.appendChild(img);
}
}
单文件上传预览只需要把appendChild改为更改img的src即可