用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 相关文章推荐
prototype 1.5相关知识及他人笔记
Dec 16 Javascript
javascript arguments 传递给函数的隐含参数
Aug 21 Javascript
图像替换新技术 状态域方法
Jan 28 Javascript
Json对象与Json字符串互转(4种转换方式)
Mar 27 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
Aug 30 Javascript
基于JavaScript实现TAB标签效果
Jan 12 Javascript
json格式数据的添加,删除及排序方法
Jan 21 Javascript
jQuery异步提交表单实例
May 30 jQuery
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
Jun 12 jQuery
实例详解JSON取值(key是中文或者数字)方式
Aug 24 Javascript
浅谈JS对象添加getter与setter的5种方法
Jun 09 Javascript
Vue实现导入Excel功能步骤详解
Jul 03 Vue.js
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
利用 window_onload 实现select默认选择
2006/10/09 PHP
php fsockopen伪造post与get方法的详解
2013/06/14 PHP
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
PHP创建自己的Composer包方法
2018/04/09 PHP
表单的一些基本用法与技巧
2006/07/15 Javascript
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
IE下通过a实现location.href 获取referer的值
2014/09/04 Javascript
JavaScript实现表格点击排序的方法
2015/05/11 Javascript
jquery实现select下拉框美化特效代码分享
2015/08/18 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
JavaScript表单验证实现代码
2017/05/22 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
js实现鼠标单击Tab表单切换效果
2018/05/16 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)
2020/02/11 Javascript
[02:48]DOTA2超级联赛专访海涛:你们的选择没有错
2013/06/07 DOTA
Linux下将Python的Django项目部署到Apache服务器
2015/12/24 Python
Python调用C语言的方法【基于ctypes模块】
2018/01/22 Python
对tensorflow 中tile函数的使用详解
2020/02/07 Python
Python3查找列表中重复元素的个数的3种方法详解
2020/02/13 Python
python 元组和列表的区别
2020/12/30 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
电大会计学自我鉴定
2014/02/06 职场文书
绿色出行口号
2014/06/18 职场文书
红色旅游心得体会
2014/09/03 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
毕业纪念册寄语大全
2015/02/26 职场文书
实施意见格式范本
2015/06/05 职场文书
小学数学教师研修感悟
2015/11/18 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书
Golang 并发下的问题定位及解决方案
2022/03/16 Golang
Win10鼠标轨迹怎么开 Win10显示鼠标轨迹方法
2022/04/06 数码科技