实现图片上传预览和取消文件上传功能
2017-06-01 15:51
811 查看
问题由来:自己开发的一个预约系统要实现上传图片预览,自己费了九牛二虎之力,加上查资料才实现功能。下面我的实现思路。
预览功能:
1.<input id="files" type="file" onchange="preview();"/>首先需要定义一个事件,这个文件选择框发生改变,就触发这个方法,我这里叫preview.
2.preview方法里面需要怎样写,首先需要获得this file 的路径也就是url。
3.然后将url赋值给img 的src属性。
取消上传功能
1.定义一个按钮,添加一个单击时间对应函数为call();
2.函数里面先将img的src属性设置为空串。
3.将input 的value属性设置为空串。
下面代码实现:
选择前:
选择后:
取消后:
前面还遗留一个问题,我的取消上传代码是这样:
function call() {
//将img的src属性赋值为空串
document.getElementById("image").src ="";
//选择文件框的value属性赋值为空串
document.getElementById("fileload").value ="";
}
问题就是我把这些属性都赋值为空串,如果都赋值为null会怎样:
function call() {
//将img的src属性赋值为空串
document.getElementById("image").src =null;
//选择文件框的value属性赋值为空串
document.getElementById("fileload").value =null;
}
上图:
结果会发现img会多个图标而文件框无改变,我是这么理解这个问题,第一种情况空串,我可以认为这个对象是存在的,只不过他没有值,而第二种情况是,这个对象根本不存在,所以会提示加载不到图片,向有时网络延迟就会出现这种情况。
预览功能:
1.<input id="files" type="file" onchange="preview();"/>首先需要定义一个事件,这个文件选择框发生改变,就触发这个方法,我这里叫preview.
2.preview方法里面需要怎样写,首先需要获得this file 的路径也就是url。
3.然后将url赋值给img 的src属性。
取消上传功能
1.定义一个按钮,添加一个单击时间对应函数为call();
2.函数里面先将img的src属性设置为空串。
3.将input 的value属性设置为空串。
下面代码实现:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script> //实现预览功能 function preview() { //获取文件框的第一个文件,因为文件有可能上传多个文件,咱这里是一个文件 var file = document.getElementById("fileload").files[0]; //可以进行一下文件类型的判断 var fileType = file.type.split("/")[0]; if(fileType != "image") { alert("请上传图片") return; } //图片大小的限制 var fileSize = Math.round(file.size / 1024 / 1024); if(fileSize >= 3) { alert("请上传小于少于3M的图片"); return; } //获取img对象 var img = document.getElementById("image"); //建一条文件流来读取图片 var reader = new FileReader(); //根据url将文件添加的流中 reader.readAsDataURL(file); //实现onload接口 reader.onload = function(e) { //获取文件在流中url url = reader.result; //将url赋值给img的src属性 img.src = url; }; } //实现取消上传功能 function call() { //将img的src属性赋值为空串 document.getElementById("image").src = ""; //选择文件框的value属性赋值为空串 document.getElementById("fileload").value = ""; }
</script> </head> <body> <input id="fileload" type="file" onchange="preview();" /> <!--建一个文件选择框--> <input type="button" value="取消" onclick="call();" /> <h2>预览</h2> <div style="width: 400px;height: 400px;border: 1px solid #303030;"> <!--设置一个框放图片--> <img id="image" width="100%" height="100%" src="" /> <!--放图片的标签--> </div> </body> </html>实现效果:
选择前:
选择后:
取消后:
前面还遗留一个问题,我的取消上传代码是这样:
function call() {
//将img的src属性赋值为空串
document.getElementById("image").src ="";
//选择文件框的value属性赋值为空串
document.getElementById("fileload").value ="";
}
问题就是我把这些属性都赋值为空串,如果都赋值为null会怎样:
function call() {
//将img的src属性赋值为空串
document.getElementById("image").src =null;
//选择文件框的value属性赋值为空串
document.getElementById("fileload").value =null;
}
上图:
结果会发现img会多个图标而文件框无改变,我是这么理解这个问题,第一种情况空串,我可以认为这个对象是存在的,只不过他没有值,而第二种情况是,这个对象根本不存在,所以会提示加载不到图片,向有时网络延迟就会出现这种情况。
相关文章推荐
- 怎么简便地去掉html中难看的文件上传按钮并实现图片预览功能?
- jsp中点击图片弹出文件上传界面及预览功能的实现
- js实现上传图片本地预览功能以及限制图片的文件大小和尺寸大小
- jsp中点击图片弹出文件上传界面及预览功能的实现
- php+js实现图片的上传、裁剪、预览、提交整个功能
- 纯AS代码flash实现预览上传本地图片功能
- js实现IE7图片上传预览的功能代码
- dropzone实现拖放文件上传并预览图片
- Servlet+Jsp实现图片或文件的上传功能具体思路及代码
- HTML5本地拖拽上传实现图片预览功能的实践总结
- jquery实现兼容浏览器的图片上传本地预览功能
- php+ajax实现图片文件上传功能实例
- ueditor 编辑器的配置 实现了上传图片与文件功能---附效果图
- ueditor 编辑器的配置 实现了上传图片与文件功能---附效果图
- JavaScript实现本地图片上传预览功能(兼容IE、chrome、FF)
- JavaScript实现本地图片上传预览功能(兼容IE、chrome、FF)
- 用MVC实现简单的文件(图片)上传下载功能
- Servlet+Jsp实现图片或文件的上传功能
- 完美实现 IE10 下利用HTML5实现文件上传(图片上传)功能
- php+ajax实现图片文件上传功能实例