用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 相关文章推荐
js下通过prototype扩展实现indexOf的代码
Dec 08 Javascript
最短的IE判断代码
Mar 13 Javascript
中文字符串截取的js函数代码
Apr 17 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
Jul 05 Javascript
三种Node.js写文件的方式
Mar 08 Javascript
基于bootstrap风格的弹框插件
Dec 28 Javascript
解决JS外部文件中文注释出现乱码问题
Jul 09 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
Dec 15 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
Nov 30 Javascript
Bootstarp在pycharm中的安装及简单的使用方法
Apr 19 Javascript
Angular实现svg和png图片下载实现
May 05 Javascript
JavaScript如何实现图片处理与合成
May 29 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实现utf-8和GB2312编码相互转换函数代码
2013/02/07 PHP
Laravel框架数据库CURD操作、连贯操作总结
2014/09/03 PHP
smarty简单分页的实现方法
2014/10/27 PHP
基于递归实现的php树形菜单代码
2014/11/19 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
基于PHP实现用户注册登录功能
2016/10/14 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
2017/02/17 PHP
PHP PDOStatement::debugDumpParams讲解
2019/01/30 PHP
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
jquery+ajax验证不通过也提交表单问题处理
2014/12/12 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
jQuery菜单插件用法实例
2015/07/25 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
js实现漫天星星效果
2017/01/19 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
js 取消页面可以选中文字的功能方法
2018/01/02 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
vue router动态路由设置参数可选问题
2019/08/21 Javascript
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
Python求解平方根的方法
2015/03/11 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
python 读写文件,按行修改文件的方法
2018/07/12 Python
Python中一些深不见底的“坑”
2019/06/12 Python
Python合并2个字典成1个新字典的方法(9种)
2019/12/19 Python
TensorFlow命名空间和TensorBoard图节点实例
2020/01/23 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
python中的 zip函数详解及用法举例
2020/02/16 Python
如何在Django中使用聚合的实现示例
2020/03/23 Python
如何在pycharm中安装第三方包
2020/10/27 Python
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
Vilebrequin欧洲官网:法国豪华泳装品牌(男士沙滩裤)
2018/04/14 全球购物
2016高中社会实践心得体会范文
2016/01/14 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书