图片的上传预览功能主要用于图片上传前的一个效果的预览,目前主流的方法主要有js,jquery与flash实现,但我们一般都会使用js来实现图片上传预览功能,下面来看一个例子。
原理:
分为两步:当上传图片的input被触发并选择本地图片之后获取要上传的图片这个对象的URL(对象URL);把对象URL赋值给事先写好的img标签的src属性即可把图片显示出来。
在这里,我们需要了解Javascript里File对象、Blob对象和window.URL.createObjectURL()方法。
File对象:
File对象可以用来获取某个文件的信息,还可以用来读取这个文件的内容.通常情况下,File对象是来自用户在一个input元素上选择文件后返回的FileList对象,也可以是来自由拖放操作生成的 DataTransfer对象.
下面来看获取FileList对象:
<script type="text/javascript" src="jquery.js"></script> <input id="upload" type="file"> <img id="preview" src=""> <script type="text/javascript"> $('#upload').change(function(){ // 获取FileList的第一个元素 alert(document.getelementbyid('upload').files[0]); }); </script>
Blob对象:
一个Blob对象就是一个包含有只读原始数据的类文件对象.Blob对象中的数据并不一定得是JavaScript中的原生形式.File接口基于Blob,继承了Blob的功能,并且扩展支持了用户计算机上的本地文件.
我们想要得到的对象URL实际上就是从Blob这个对象获取的,因为File的接口继承Blob。下面就来把Blob对象转换成URL:
<script type="text/javascript"> var f = document.getelementbyid('upload').files[0]; var src = window.URL.createObjectURL(f); document.getElementById('preview').src = src; </script>
兼容性:
上述方法适用于chrome浏览器
如果是IE浏览器可以直接使用input的value来代替src
网上查看资料有直接使用File对象的getAsDataURL()方法获取URL的,现在这个方法都已经废除,类似的还有getAsText()和getAsBinary()方法,我们来看这样一个例子。
function getFullPath(obj) { //得到图片的完整路径 if (obj) { //ie if (window.navigator.userAgent.indexOf("MSIE") >= 1) { obj.select(); return document.selection.createRange().text; } //firefox else if (window.navigator.userAgent.indexOf("Firefox") >= 1) { if (obj.files) { return obj.files.item(0).getAsDataURL(); } return obj.value; } return obj.value; } }
这段代码是获取客户端图片的完整路径
我们再限制其大小和格式
$("#loadFile").change(function () { var strSrc = $("#loadFile").val(); img = new Image(); img.src = getFullPath(strSrc); //验证上传文件格式是否正确 var pos = strSrc.lastIndexOf("."); var lastname = strSrc.substring(pos, strSrc.length) if (lastname.toLowerCase() != ".jpg") { alert("您上传的文件类型为" + lastname + ",图片必须为 JPG 类型"); return false; } //验证上传文件宽高比例 if (img.height / img.width > 1.5 || img.height / img.width < 1.25) { alert("您上传的图片比例超出范围,宽高比应介于1.25-1.5"); return; } //验证上传文件是否超出了大小 if (img.fileSize / 1024 > 150) { alert("您上传的文件大小超出了150K限制!"); return false; }
其中,loadFile是html input file的id。在它的change事件,也就是选择了要上传的文件以后,让图片显示在图片框里吗,在上面代码的最后加上以下代码
$("#stuPic").attr("src", getFullPath(this));
既然用到了jQuery,下面我们再分享一个用jQuery的写的代码实例:
<html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="jquery.js"></script> <script language="javascript"> $(function(){ var ei = $("#large"); ei.hide(); $("#img1").mousemove(function(e){ ei.css({top:e.pageY,left:e.pageX}).html('<img style="border:1px solid gray;" src="' + this.src + '" />').show(); }).mouseout( function(){ ei.hide("slow"); }) $("#f1").change(function(){ $("#img1").attr("src","file:///"+$("#f1").val()); }) }); </script> <style type="text/css"> #large{position:absolute;display:none;z-index:999;} </style> </head> <body> <form name="form1" id="form1"> <div id="demo"> <input id="f1" name="f1" type="file" /> <img id="img1" width="60" height="60"> </div> <div id="large"></div> </form> </body> </html>
本文向大家介绍jQuery实现本地预览上传图片功能,包括了jQuery实现本地预览上传图片功能的使用技巧和注意事项,需要的朋友参考一下 本文实例介绍了基于JQUERY扩展,图片上传预览插件,目前兼容浏览器(IE 谷歌 火狐) 不支持safari,分享给大家供大家参考,具体内容如下 HTML代码: js代码: 直接上第二段代码,jquery js实现上传图片之前预览本地图片 以上就是本文的全部内容,
本文向大家介绍上传图片预览JS脚本 Input file图片预览的实现示例,包括了上传图片预览JS脚本 Input file图片预览的实现示例的使用技巧和注意事项,需要的朋友参考一下 在深圳做项目的时候,需要一个用户上传头像预览的功能!是在网上找了好多,都不太满意。要么是flash的,要么是Ajax上传后返回图片路径的,要么压根就是不能用的。幸运的是在这个项目以前有人写过一个图片预览的功能,还被我
本文向大家介绍H5上传本地图片并预览功能,包括了H5上传本地图片并预览功能的使用技巧和注意事项,需要的朋友参考一下 最近工作中需要H5上传显示图片的功能,如图: 直接上代码: html部分 我这边用css将input[type=file] 设置成了opticy:0; 这样可以看起来更像原生的上传。 更多精彩内容请参考专题《ajax上传技术汇总》,《javascript文件上传操作汇总》和《jQue
问题内容: 在我的HTML表单中,我输入了类型为file的文件,例如: 然后,通过单击该输入按钮来选择多个文件。现在,我想在提交表单之前显示所选图像的预览。如何在HTML 5中做到这一点? 问题答案: HTML5带有FileAPI规范,它使您可以创建应用程序,使用户可以在本地与文件交互;这意味着您可以加载文件并在浏览器中呈现它们,而无需实际上传文件。FileAPI的一部分是FileReader接口
本文向大家介绍基于jquery实现图片上传本地预览功能,包括了基于jquery实现图片上传本地预览功能的使用技巧和注意事项,需要的朋友参考一下 当我们在上传文件时如果每次都要上传到服务器才可以预览这个做看上合理其实是不合理的,如果网速慢或图片有问题,这样不但浪费客户时间同时也浪费服务器资源了,下面我们介绍利用js上传图片时本地实现预览,希望此方法对各位有所帮助哦。 一、原理 分为两步: 当上传图片
本文向大家介绍JavaScript实现单图片上传并预览功能,包括了JavaScript实现单图片上传并预览功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了JavaScript实现单图片上传并预览功能的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。