前段时间遇到一个问题,前端想实现图片上传预览(不经过后端PHP或JAVA处理),用户点击file按钮上传文件,点击确定马上就能看到预览的效果,但在实现的时候无论怎样都取不到file上图片的真实路径,得到的反而是C:\fakepath\a.jpg,这个路径是错误的。百度之后得到说浏览器基于保护用户的相关安全措施,隐藏了上传的真实路径,用fakepath代替,当然,调整浏览器的相关安全设置可以解决这个问题。但我们不可能让所有用户都通过设置浏览器的安全设置来进行图片上传,这种方法在网络交互上显然不现实。

/*
*名称:图片上传本地预览插件 v1.1
*介绍:基于JQUERY扩展,图片上传预览插件 目前兼容浏览器(IE 谷歌 火狐) 不支持safari
*插件网站:http://keleyi.com/keleyi/phtml/image/16.htm
*参数说明:
Img:图片ID;
Width:预览宽度;
Height:预览高度;
ImgType:支持文件类型;
Callback:选择文件显示图片后回调方法;
*使用方法:
<div>
<img id="ImgPr" width="120" height="120" /></div>
<input type="file" id="up" />

把需要进行预览的IMG标签外 套一个DIV 然后给上传控件ID给予uploadPreview事件

$("#up").uploadPreview({ Img: "ImgPr", Width: 120, Height: 120, ImgType: ["gif", "jpeg", "jpg", "bmp", "png"], Callback: function () { }});

实例:

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}
//高版本Jquey使用  if ($.support.leadingWhitespace)if ($.browser.msie) { //低版本jquery中使用的方式try {$("#" + opts.Img).attr('src', _self.getObjectURL(this.files[0]))} catch (e) {var src = "";var obj = $("#" + opts.Img);var div = obj.parent("div")[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("div").css({'filter': 'progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)','width': opts.Width + 'px','height': opts.Height + 'px'});div.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = src}} else {$("#" + opts.Img).attr('src', _self.getObjectURL(this.files[0]))}opts.Callback()}})}
});

调用:

$(function () {$("#up").uploadPreview({ Img: "ImgPr", Width: 120, Height: 120 });
});

HTML结构:

<div>
<img id="ImgPr" width="120" height="120" />
</div>
<input type="file" id="up" />

本人发布的插件测试地址:http://www.jq22.com/webqd875

转载于:https://www.cnblogs.com/tongkaiqiang/p/6780822.html

jQuery图片上传前先在本地预览(不经过后端处理)相关推荐

  1. python与html交互实现图片上传_python 实现上传图片并预览的3种方法(推荐)

    在常见的用户注册页面,需要用户在本地选择一张图片作为头像,并同时预览. 常见的思路有两种:一是将图片上传至服务器的临时文件夹中,并返回该图片的url,然后渲染在html页面:另一种思路是,直接在本地内 ...

  2. 微信公众号开发《四》使用微信JS-SDK实现手机图片上传,支持压缩、预览。并下载图片到自身服务器

    在这粘贴上三篇博文链接,方便大家查阅互相学习: 微信公众号开发<一>OAuth2.0网页授权认证获取用户的详细信息,实现自动登陆 微信公众号开发<二>发送模板消息实现消息业务实 ...

  3. ajax:html5上传文件,上传之前可以实现本地预览

    本主题主要涉及两个新内容: 1.上传文件(主要使用了FormData) 2.本地预览(主要使用了FileReader) html5的FormData其实就是平时的Form表单,只是html5可以直接新 ...

  4. input文件框选择本地图片后页面预览图片并获取图片长宽以及大小 图片上传前预览

    前面有转过一篇通过HTML5来实现图片上传前预览 ,现在借助FileReader也实现了这个需求.并且同时还可以获得图片的长宽相素以及图片文件的大小.demo如下: <html> < ...

  5. JavaScript 实现图片上传前本地预览

    JavaScript 实现图片上传前本地预览 图片上传前预览,应该算是一个普遍的需求,很多时候可能选中的图片并不是想要的那张,所以需要上传前预览下. JS(浏览器中)是一门特殊的语言,它没有直接读写磁 ...

  6. html之file标签 --- 图片上传前预览 -- FileReader

    记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了 ...

  7. php主页显示商品预览图代码,jQuery实现鼠标滑过商品小图片上显示对应大图商品页预览功能...

    这次给大家带来jQuery实现鼠标滑过商品小图片上显示对应大图商品页预览功能,jQuery实现鼠标滑过商品小图片上显示对应大图商品页预览功能的注意事项有哪些,下面就是实战案例,一起来看一下. 1 . ...

  8. SpringBoot+Vue+OpenOffice实现文档管理(文档上传、下载、在线预览)

    场景 SpringBoot集成OpenOffice实现doc文档转html: SpringBoot集成OpenOffice实现doc文档转html_BADAO_LIUMANG_QIZHI的博客-CSD ...

  9. java 预览zip_java压缩包上传,解压,预览(利用editor.md和Jstree实现)和下载

    java压缩包上传,解压,预览(利用editor.md和Jstree实现)和下载 实现功能:zip文件上传,后台自动解压,Jstree树目录(遍历文件),editor.md预览 采用Spring+Sp ...

最新文章

  1. MySql模糊查询中特殊字符处理
  2. java错误: 非法字符: '\ufeff' 需要class, interface或enum
  3. 面试的时候的要注意的case应该怎么分析
  4. linux7添加两个网关,RHEL7设置IP地址、网关和DNS(示例代码)
  5. asp python 定时任务_python定时任务最强框架APScheduler详细教程
  6. java.lang.String小测试
  7. JVM003_属性表
  8. 搭建简易留言板过程中遇到的问题
  9. 名称节点和数据节点作用
  10. mysql如何撤销上一条指令_mysql命令行,多行命令时如何取消/返回修改前边的命令...
  11. android马赛克代码,android图片马赛克 mosaic
  12. 2.4时序卷积网络TCN:因果膨胀卷积、残差连接和跳过连接
  13. Mac无法开机?如何修复
  14. iOS 此应用需要开发者更新以在此ios版本上运行
  15. pythoneval函数错误_python中eval函数未实现错误
  16. 计算机重装系统后黑屏,电脑重装系统后黑屏怎么办
  17. Kruskal算法求最小生成树
  18. 从码农到工程师:只要做到这6点
  19. 使用swiper组件的transform属性导致文字模糊的解决办法
  20. OA系统实现(请假审批,mybatis)-2

热门文章

  1. LuoguP3959 宝藏 题解
  2. 学习Struts--Chap02:Struts2框架各个功能模块和程序执行流程的介绍
  3. [设计模式]8. C++与中介者模式(mediator pattern)
  4. CQRS, Task Based UIs, Event Sourcing agh!
  5. 动态规划专题 01背包问题详解【转】
  6. ADO.NET Entity Framework 入门示例向导(附Demo程序下载)
  7. 关于产品的一些交互理念
  8. 复盘 | 听全民K歌体验设计师聊聊歌房项目完整设计历程
  9. 走进腾讯 |《产品经理第一课》宜信、零度无人机、悦跑圈核心团队独家分享爆款产品的打造秘籍...
  10. 活动结束|金融圈第19期分享:数据系统如何防范金融非统性风险?