用iframe实现不刷新整个页面上传图片的实例


Posted in Javascript onNovember 18, 2016

经常用到上传图片即时预览的功能,实现方式很多,用flash+js实现的比较多,今天遇到同事不想用flash之类也不想用网上的插件,那么我给了他一种解决办法:

思路:

1. 页面上传图片的部分放到一个iframe中,iframe设置无边框无滚动条,和所嵌入的页面风格一致,根据需要设置固定大小

2. 在iframe中提交上传图片的表单,提交后再次返回原页面(iframe所指向的页面)并从服务器带回刚上传的图片地址,调用父页面的js代码加载图片

3. 如果用到要进度条等效果,就在表单提交后,在servlet一端输出进度条,然后一直发送调用js脚本,及时改变页面内容。其他功能诸如取消等功能可以参考推送

下面的代码实现了基本的文件上传:

index.jsp页面里嵌入一个文件上传的页面 _uploadpic.jsp

index.jsp:

...

 <script type="text/javascript">
 /*
param imgPath:img path of uploaded

this function will show the uploaded img in div(id=show_img_div)
 */
 function showUploadImg(imgPath){
if(imgPath=="")return;
document.getElementById("show_img_div").innerHTML="<img src='"+imgPath+"'/>";
}
 </script>
 <body>
 <iframe scrolling="no"width="300" height="100" src="_uploadpic.jsp"></iframe>
<!-- use to show img(uploaded) -->
<div id="show_img_div"></div>


...

_uploadpic.jsp:

...

<body onload="javascript:window.parent.showUploadImg('${img}');"><!--'${img}' request或者session中的图片地址(从服务器传递来的) -->
<form method="post" id="upload_form" action="${pageContext.request.contextPath }/servlet/IframeTestImageServlet" enctype="multipart/form-data">
  <input type="file" name="pic"/><br/><input type="submit" value="upload"/>
  </form> 
</body>


...

servlet:(处理图片上传的servlet)

//处理上传的图片 

.... 代码多 此处略去

   //把刚上传的图片在服务器中的地址返回到客户端

request.setAttribute("img",request.getContextPath()+"/img/mm.jpg");// '/img/mm.jpg'表示刚上传图片在服务器中的地址
request.getRequestDispatcher("/_uploadpic.jsp").forward(request, response);

以上这篇用iframe实现不刷新整个页面上传图片的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Node.js实战 建立简单的Web服务器
Mar 08 Javascript
jquery Mobile入门—多页面切换示例学习
Jan 08 Javascript
JavaScript创建一个object对象并操作对象属性的用法
Mar 23 Javascript
深入浅析AngularJS中的module(模块)
Jan 04 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
May 10 Javascript
jQuery复制节点用法示例(clone方法)
Sep 08 Javascript
jQuery代码实现实时获取时间
Jan 29 Javascript
vue使用自定义icon图标的方法
May 14 Javascript
新手必须知的Node.js 4个JavaScript基本概念
Sep 16 Javascript
使用vue-cli webpack 快速搭建项目的代码
Nov 21 Javascript
vuejs移动端实现div拖拽移动
Jul 25 Javascript
原生js实现碰撞检测
Mar 12 Javascript
Form表单按回车自动提交表单的实现方法
Nov 18 #Javascript
form+iframe解决跨域上传文件的方法
Nov 18 #Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
Nov 18 #Javascript
微信小程序开发实战教程之手势解锁
Nov 18 #Javascript
JavaScript之WebSocket技术详解
Nov 18 #Javascript
仿iframe效果Aajx文件上传实例
Nov 18 #Javascript
JavaScript之cookie技术详解
Nov 18 #Javascript
You might like
php实现cc攻击防御和防止快速刷新页面示例
2014/02/13 PHP
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
PHP传参之传值与传址的区别
2015/04/24 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
js中匿名函数的N种写法
2010/09/08 Javascript
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
vue项目优化之通过keep-alive数据缓存的方法
2017/12/11 Javascript
vue中实现左右联动的效果
2018/06/22 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
JavaScript实现音乐导航效果
2020/11/19 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
详解Python3中的Sequence type的使用
2015/08/01 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
pycharm远程调试openstack的图文教程
2017/11/21 Python
python中实现字符串翻转的方法
2018/07/11 Python
django框架实现模板中获取request 的各种信息示例
2019/07/01 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
html5 canvas简单封装一个echarts实现不了的饼图
2018/06/12 HTML / CSS
DogBuddy荷兰:找到你最完美的狗保姆
2019/04/17 全球购物
Laura官网:加拿大女性的顶级时尚目的地
2019/09/20 全球购物
中学教师岗位职责
2013/11/26 职场文书
营业员演讲稿
2013/12/30 职场文书
迟到检讨书400字
2014/01/13 职场文书
三年级音乐教学反思
2014/01/28 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
党的群众路线教育实践活动领导班子整改方案
2014/10/25 职场文书
教师师德承诺书2016
2016/03/25 职场文书
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS
MySQL中IO问题的深入分析与优化
2022/04/02 MySQL