700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 基于jquery实现图片上传本地预览功能【jquery】

基于jquery实现图片上传本地预览功能【jquery】

时间:2023-09-11 00:59:46

相关推荐

基于jquery实现图片上传本地预览功能【jquery】

web前端|js教程

jquery,图片上传,本地预览

web前端-js教程

当我们在上传文件时如果每次都要上传到服务器才可以预览这个做看上合理其实是不合理的,如果网速慢或图片有问题,这样不但浪费客户时间同时也浪费服务器资源了,下面我们介绍利用js上传图片时本地实现预览,希望此方法对各位有所帮助哦。

A、原理

仿hao123源码 带后台,vscode配置pyqt,诺基亚ubuntu,指定tomcat java,sqlite打不开了,手机端tab切换插件,字节跳动前端用啥框架,爬虫浏览但不爬取,php 匹配图片,孝感seo技术,c 模拟微信登录网站,网页客户端制作软件,系统界面展示模板lzw

分为两步:

韩国风格网站整站源码,vscode相对行数插件,ubuntu 左右键,从tomcat下载图片,衢州爬虫,php多个按钮,长丰seo优化公司价格,整个网站的代码,wordpress培训类网站模板lzw

当上传图片的input被触发并选择本地图片之后获取要上传的图片这个对象的URL(对象URL);

网站全套源码下载,ubuntu查询配置命令,tomcat部署必须重启吗,爬虫12306登录,自学php教程全集交流,灌云SEOlzw

把对象URL赋值给事先写好的img标签的src属性即可把图片显示出来。

在这里,我们需要了解Javascript里File对象、Blob对象和window.URL.createObjectURL()方法。

1、File对象

File对象可以用来获取某个文件的信息,还可以用来读取这个文件的内容.通常情况下,File对象是来自用户在一个input元素上选择文件后返回的FileList对象,也可以是来自由拖放操作生成的 DataTransfer对象.

下面来看获取FileList对象:

$(#upload).change(function(){ // 获取FileList的第一个元素 alert(document.getelementbyid(upload).files[0]);});

2、Blob对象

一个Blob对象就是一个包含有只读原始数据的类文件对象.Blob对象中的数据并不一定得是JavaScript中的原生形式.File接口基于Blob,继承了Blob的功能,并且扩展支持了用户计算机上的本地文件.

我们想要得到的对象URL实际上就是从Blob这个对象获取的,因为File的接口继承Blob。下面就来把Blob对象转换成URL:

var f = document.getelementbyid(upload).files[0];var src = window.URL.createObjectURL(f);document.getElementById(preview).src = src;

一个比较完整的实例

HTML5 Upload#destination{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(true,sizingMethod=scale); }<!---->//处理file input加载的图片文件$(document).ready(function(e) { //判断浏览器是否有FileReader接口 if(typeof FileReader ==undefined) { $("#destination").css({ackground: one}).html(亲,您的浏览器还不支持HTML5的FileReader接口,无法使用图片本地预览,请更新浏览器获得最好体验); //如果浏览器是ie if($.browser.msie===true) { //ie6直接用file input的value值本地预览 if($.browser.version==6) { $("#imgUpload").change(function(event){ //ie6下怎么做图片格式判断? var src = event.target.value; //var src = document.selection.createRange().text; //选中后 selection对象就产生了 这个对象只适合ie var img = \; $("#destination").empty().append(img); }); } //ie7,8使用滤镜本地预览 else if($.browser.version==7 || $.browser.version==8) { $("#imgUpload").change(function(event){ $(event.target).select(); var src = document.selection.createRange().text; var dom = document.getElementById(destination); //使用滤镜 成功率高 dom.filters.item(DXImageTransform.Microsoft.AlphaImageLoader).src= src; dom.innerHTML = \; //使用和ie6相同的方式 设置src为绝对路径的方式 有些图片无法显示 效果没有使用滤镜好 /*var img = \; $("#destination").empty().append(img);*/ }); } } //如果是不支持FileReader接口的低版本firefox 可以用getAsDataURL接口 else if($.browser.mozilla===true) { $("#imgUpload").change(function(event){ //firefox2.0没有event.target.files这个属性 就像ie6那样使用value值 但是firefox2.0不支持绝对路径嵌入图片 放弃firefox2.0 //firefox3.0开始具备event.target.files这个属性 并且开始支持getAsDataURL()这个接口 一直到firefox7.0结束 不过以后都可以用HTML5的FileReader接口了 if(event.target.files) { //console.log(event.target.files); for(var i=0;i<event.target.files.length;i++) {var img = \; $("#destination").empty().append(img); } } else { //console.log(event.target.value); //$("#imgPreview").attr({src:event.target.value}); } }); } } else { // version 1 /*$("#imgUpload").change(function(e){ var file = e.target.files[0]; var fReader = new FileReader(); //console.log(fReader); //console.log(file); fReader.onload=(function(var_file) { return function(e) { $("#imgPreview").attr({src:e.target.result,alt:var_file.name}); } })(file); fReader.readAsDataURL(file); });*/ //单图上传 version 2 /*$("#imgUpload").change(function(e){ var file = e.target.files[0]; var reader = new FileReader(); reader.onload = function(e){ //displayImage($(d),e.target.result); //alert(load); $("#imgPreview").attr({src:e.target.result}); } reader.readAsDataURL(file); });*/ //多图上传 input file控件里指定multiple属性 e.target是dom类型 $("#imgUpload").change(function(e){for(var i=0;i<e.target.files.length;i++) {var file = e.target.files.item(i); //允许文件MIME类型 也可以在input标签中指定accept属性 //console.log(/^image/.*$/i.test(file.type)); if(!(/^image/.*$/i.test(file.type))) { continue; //不是图片 就跳出这一次循环 }//实例化FileReader API var freader = new FileReader(); freader.readAsDataURL(file); freader.onload=function(e) { var img = \; $("#destination").empty().append(img); } } });//处理图片拖拽的代码 var destDom = document.getElementById(destination); destDom.addEventListener(dragover,function(event){ event.stopPropagation(); event.preventDefault(); },false);destDom.addEventListener(drop,function(event){ event.stopPropagation(); event.preventDefault(); var img_file = event.dataTransfer.files.item(0); //获取拖拽过来的文件信息 暂时取一个 //console.log(event.dataTransfer.files.item(0).type); if(!(/^image/.*$/.test(img_file.type))) { alert(您还未拖拽任何图片过来,或者您拖拽的不是图片文件); return false; } fReader = new FileReader(); fReader.readAsDataURL(img_file); fReader.onload = function(event){ destDom.innerHTML=\; destDom.innerHTML = \; }; },false); }}); <!---->

B、兼容性

•上述方法适用于chrome浏览器

•如果是IE浏览器可以直接使用input的value来代替src

•网上查看资料有直接使用File对象的getAsDataURL()方法获取URL的,现在这个方法都已经废除,类似的还有getAsText()和getAsBinary()方法;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。