Ajax怎么实现上传前先预览图片的功能

这次给大家带来Ajax怎么实现上传前先预览图片的功能,Ajax实现上传前先预览图片功能的注意事项有哪些,下面就是实战案例,一起来看一下。

手头上有几个小项目用到了easyUI,一开始决定使用easyUI就注定了项目整体上前后端分离,基本上所有的请求都采用Ajax来完成。在文件上传的时候用到了Ajax上传文件,以及图片在上传之前的预览效果,解决了这两个小问题,和小伙伴们分享下。

上传之前的预览

方式一

先来说说图片上传之前的预览问题。这里主要采用了HTML5中的FileReader对象来实现,关于FileReader对象,如果小伙伴们不了解,可以查看这篇文章HTML5学习之FileReader接口。我们来看看实现方式:

  Ajax上传文件 用户名:
用户图像:

$("#btnClick").click(function () { var formData = new FormData(); formData.append("username", $("#username").val()); formData.append("file", $("#userface")[0].files[0]); $.ajax({ url: '/fileupload', type: 'post', data: formData, processData: false, contentType: false, success: function (msg) { alert(msg); } }); }); function preview(file) { var prevp = document.getElementById('preview'); if (file.files && file.files[0]) { var reader = new FileReader(); reader.onload = function (evt) { prevp.innerHTML = 'Ajax怎么实现上传前先预览图片的功能'; } reader.readAsDataURL(file.files[0]); } else { prevp.innerHTML = '

'; } }

登录后复制

这里对于支持FileReader的浏览器直接使用FileReader来实现,不支持FileReader的浏览器则采用微软的滤镜来实现(注意给图片上传的input标签设置onchange函数)。

实现效果如下:

这里写图片描述

方式二

除了这种方式之外我们也可以采用网上现成的一个jQuery实现的方式。这里主要参考了这里。

不过由于原文年代久远,里边使用的$.browser.msie从jQuery1.9就被移除掉了,所以如果我们想使用这个得做一点额外的处理,我修改后的uploadPreview.js文件内容如下:

jQuery.browser={};(function(){jQuery.browser.msie=false; jQuery.browser.version=0;if(navigator.userAgent.match(/MSIE ([0-9]+)./)){ jQuery.browser.msie=true;jQuery.browser.version=RegExp.$1;}})();jQuery.fn.extend({ uploadPreview: function (opts) {  var _self = this,   _this = $(this);  opts = jQuery.extend({   Img: "ImgPr",   Width: 100,   Height: 100,   ImgType: ["gif", "jpeg", "jpg", "bmp", "png"],   Callback: function () {}  }, opts || {});  _self.getObjectURL = function (file) {   var url = null;   if (window.createObjectURL != undefined) {    url = window.createObjectURL(file)   } else if (window.URL != undefined) {    url = window.URL.createObjectURL(file)   } else if (window.webkitURL != undefined) {    url = window.webkitURL.createObjectURL(file)   }   return url  };  _this.change(function () {   if (this.value) {    if (!RegExp(".(" + opts.ImgType.join("|") + ")$", "i").test(this.value.toLowerCase())) {     alert("选择文件错误,图片类型必须是" + opts.ImgType.join(",") + "中的一种");     this.value = "";     return false    }    if ($.browser.msie) {     try {      $("#" + opts.Img).attr('src', _self.getObjectURL(this.files[0]))     } catch (e) {      var src = "";      var obj = $("#" + opts.Img);      var p = obj.parent("p")[0];      _self.select();      if (top != self) {       window.parent.document.body.focus()      } else {       _self.blur()      }      src = document.selection.createRange().text;      document.selection.empty();      obj.hide();      obj.parent("p").css({       'filter': 'progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)',       'width': opts.Width + 'px',       'height': opts.Height + 'px'      });      p.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = src     }    } else {     $("#" + opts.Img).attr('src', _self.getObjectURL(this.files[0]))    }    opts.Callback()   }  }) }});

登录后复制

然后在我们的html文件中引入这个js文件即可:

  Ajax上传文件  用户名:
用户图像:

Ajax怎么实现上传前先预览图片的功能

$("#btnClick").click(function () { var formData = new FormData(); formData.append("username", $("#username").val()); formData.append("file", $("#userface")[0].files[0]); $.ajax({ url: '/fileupload', type: 'post', data: formData, processData: false, contentType: false, success: function (msg) { alert(msg); } }); }); $("#userface").uploadPreview({Img: "ImgPr", Width: 120, Height: 120});

登录后复制

这里有如下几点需要注意:

1.HTML页面中要引入我们自定义的uploadPreview.js文件

2.预先定义好要显示预览图片的img标签,该标签要有id。

3.查找到img标签然后调用uploadPreview函数

执行效果如下:

这里写图片描述

Ajax上传图片文件

Ajax上传图片文件就简单了,没有那么多方案,核心代码如下:

 var formData = new FormData();  formData.append("username", $("#username").val());  formData.append("file", $("#userface")[0].files[0]);  $.ajax({   url: '/fileupload',   type: 'post',   data: formData,   processData: false,   contentType: false,   success: function (msg) {    alert(msg);   }  });

登录后复制

核心就是定义一个FormData对象,将要上传的数据包装到这个对象中去。然后在ajax上传数据的时候设置data属性就为formdata,processData属性设置为false,表示jquery不要去处理发送的数据,然后设置contentType属性的值为false,表示不要设置请求头的contentType属性。OK,主要就是设置这三个,设置成功之后,其他的处理就和常规的ajax用法一致了。

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

AjaxFileUpload怎么动态的添加文件上传框

AJAX如何检测用户名是否具有重复性

以上就是Ajax怎么实现上传前先预览图片的功能的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2777238.html

(0)
上一篇 2025年3月8日 15:03:24
下一篇 2025年2月18日 13:00:20

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • ajax文件异步实现表单上传

    这次给大家带来ajax文件异步实现表单上传,ajax文件异步实现表单上传的注意事项有哪些,下面就是实战案例,一起来看一下。 项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Fi…

    编程技术 2025年3月8日
    200
  • Ajaxupload实现多文件上传操作

    这次给大家带来Ajaxupload实现多文件上传操作,Ajaxupload实现多文件上传操作的注意事项有哪些,下面就是实战案例,一起来看一下。 废话不多说了,直接给大家贴代码了,具体代码如下所示: $msg, ‘filedir’ =>…

    编程技术 2025年3月8日
    200
  • kkpager实现ajax分页查询功能详解(附代码)

    这次给大家带来kkpager实现ajax分页查询功能详解(附代码),kkpager实现ajax分页查询功能详解的注意事项有哪些,下面就是实战案例,一起来看一下。 前台分页数据,适合数据少量的时候,因为分页的数据是从后台获取的,大数据的话不建…

    2025年3月8日
    200
  • 用CORS实现WebApi Ajax跨域请求的方法

    这次给大家带来用CORS实现WebApi Ajax跨域请求的方法,用CORS实现WebApi Ajax跨域请求的注意事项有哪些,下面就是实战案例,一起来看一下。 概述 ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件…

    编程技术 2025年3月8日
    200
  • Ajax实现检测网站劫持的方法

    这次给大家带来Ajax实现检测网站劫持的方法,Ajax实现检测网站劫持的注意事项有哪些,下面就是实战案例,一起来看一下。 https可以彻底解决劫持的问题。但是一般虚拟主机都不支持 https,难道http只能任流氓们恶意劫持么? 既然只有…

    2025年3月8日
    200
  • FormData与Spring MVC实现Ajax文件下载功能

    这次给大家带来FormData与Spring MVC实现Ajax文件下载功能,FormData与Spring MVC实现Ajax文件下载功能的注意事项有哪些,下面就是实战案例,一起来看一下。 Ajax文件下载 利用 FormData 对象和…

    编程技术 2025年3月8日
    200
  • Ajax返回数据之前怎么做出loading的等待动画效果

    这次给大家带来Ajax返回数据之前怎么做出loading的等待动画效果,Ajax返回数据之前做出loading等待动画效果的注意事项有哪些,下面就是实战案例,一起来看一下。 首先,我们通过ajax请求,向后台传递参数,然后后台经过一系列的运…

    编程技术 2025年3月8日
    200
  • Ajax怎么通过response在后台传递数据?(附代码)

    这次给大家带来Ajax怎么通过response在后台传递数据?(附代码),Ajax通过response在后台传递数据的注意事项有哪些,下面就是实战案例,一起来看一下。 这是js代码: var System = { getHttpReques…

    编程技术 2025年3月8日
    200
  • Ajax实现跨域请求的步骤详解

    这次给大家带来Ajax实现跨域请求的步骤详解,Ajax实现跨域请求的注意事项有哪些,下面就是实战案例,一起来看一下。 下面我们在本地建两个站点演示一下 第一步首先我们在本地搭建好一个Apache服务器;下载地址; 第二步服务器配置好以后,在…

    2025年3月8日 编程技术
    200
  • ajax怎样实现不刷新的情况下上传文件

    这次给大家带来ajax怎样实现不刷新的情况下上传文件,ajax实现不刷新上传文件的注意事项有哪些,下面就是实战案例,一起来看一下。 本文实例为大家分享了ajax实现无刷新上传文件功能的具体代码,供大家参考,具体内容如下 详细代码如下 aja…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论