用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 相关文章推荐
借用Google的Javascript API Loader来加速你的网站
Jan 28 Javascript
ExtJs扩展之GroupPropertyGrid代码
Mar 05 Javascript
javascript间隔刷新的简单实例
Nov 14 Javascript
jQuery aminate方法定位到页面具体位置
Dec 26 Javascript
用js模拟struts2的多action调用示例
May 19 Javascript
详谈JavaScript的闭包及应用
Jan 17 Javascript
微信小程序获取用户openId的实现方法
May 23 Javascript
微信小程序实现顶部下拉菜单栏
Nov 04 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
Sep 03 Javascript
利用JS如何获取form表单数据
Dec 19 Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
Oct 30 Javascript
Bootstrap FileInput实现图片上传功能
Jan 28 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
如何过滤高亮显示非法字符
2006/10/09 PHP
php下使用无限生命期Session的方法
2007/03/16 PHP
分享一个PHP数据流应用的简单例子
2012/06/01 PHP
php过滤XSS攻击的函数
2013/11/12 PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
2015/05/13 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
利用JS自动打开页面上链接的实现代码
2011/09/25 Javascript
js中top的作用深入剖析
2014/03/04 Javascript
原生js仿jq判断当前浏览器是否为ie,精确到ie6~8
2014/08/30 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
一波JavaScript日期判断脚本分享
2016/03/06 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
2016/06/13 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
详解Vuex管理登录状态
2017/11/13 Javascript
vue项目刷新当前页面的三种方法
2018/12/04 Javascript
Vue实现简单分页器
2018/12/29 Javascript
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
在Python中使用itertools模块中的组合函数的教程
2015/04/13 Python
Python的math模块中的常用数学函数整理
2016/02/04 Python
Python 查看文件的读写权限方法
2018/01/23 Python
python调用其他文件函数或类的示例
2019/07/16 Python
简单了解Django ORM常用字段类型及参数配置
2020/01/07 Python
用python批量下载apk
2020/12/29 Python
网购亚洲时装、美容产品和生活百货:YesStyle
2016/09/15 全球购物
欧舒丹加拿大官网:L’Occitane加拿大
2017/10/29 全球购物
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
Michael Kors香港官网:美国奢侈品品牌
2019/12/26 全球购物
阿尔卡特(中国)的面试题目
2014/08/20 面试题
工伤赔偿协议书
2014/04/15 职场文书
从事会计工作年限证明
2015/06/23 职场文书
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP