巧用iframe实现jsp无刷新上传文件

【JSP】文件上传局部刷新 看到局部刷新,大家联想到的肯定是Ajax,但实际上,Ajax是没有办法实现文件上传的局部刷新的。由于安全性的需要,JavaScript代码是不能访问客户端文件系统,所以通过XMLHttpRequest的请求参数是无法得到上传文件的内容的,只能得到文件名。 那么我们又是怎样实现文件上传局部刷新的呢?其实我们再上传文件的时候采用的还是同步方式,为了不刷新整个页面,我们需要用到隐藏的iframe,我们 阅读详情

转:http://www.iteye.com/topic/81120

首先要说的就是 ajax 是无法实现上传文件的,可以想一下ajax与后台通信都是通过传递字符串,怎么能传递文件呢?其实出于安全考虑js是不能操作文件的,所以就不要再说用ajax来实现文件的上传了,这是不可能的。
    而本文实现的文件上传也是无页面刷新的,可以说是一种"类似AJAX"方法。
    开始之前先说两句无关的,其实在ajax出现之前,web应用也可以是无刷新的,那时大多通过IFrame来做到这一点。当然Ajax出现之后,人们一窝蜂地投奔Ajax 的阵营了,iFrame 就乏人问津了。但是用iFrame来实现无刷新上传文件确实一个很好的选择。ps:Ajax技术基本上可以说是由google公司带起来的,但少Gmail中上传文件用的还是 IFrame,所以说使用IFrame来上传文件是最好的选择。
    我在这里这里用的技术是jsp,其实asp,php等也是一样可以这么实现的
    一共两个文件就可实现:index.html 和 upload.jsp,在这里讲解一下,文后会附上源码

--index.html

html 代码
  1. <html>  
  2. <body>  
  3.  
  4. <form action="upload.jsp" id="form1" name="form1" encType="multipart/form-data"  method="post" target="hidden_frame" >  
  5.     <input type="file" id="file" name="file" style="width:450">  
  6.     <INPUT type="submit" value="上传文件"><span id="msg"></span>  
  7.     <br>  
  8.     <font color="red">支持JPG,JPEG,GIF,BMP,SWF,RMVB,RM,AVI文件的上传</font>                
  9.     <iframe name='hidden_frame' id="hidden_frame" style='display:none'></iframe>  
  10. </form>  
  11.  
  12. </body>  
  13. </html>  
  14.  
  15. <script type="text/javascript">  
  16. function callback(msg)  
  17. {  
  18.     document.getElementById("file").outerHTML = document.getElementById("file").outerHTML;  
  19.     document.getElementById("msg").innerHTML = "<font color=red>"+msg+"</font>";  
  20. }  
  21. </script> 



 index.html 中主要要做的就是写一个 form 和 iframe ,并把 form 的 target 设为 iframe 的名字,注意要把 iframe 设为不可见,其他的都是正常的文件上传的写法,这样刷新的页面就是这个隐藏的 Iframe ,而在 index.html 中是不会有页面刷新的,js的 callback 方法是回调方法。用于清空文件上传框和显示后台信息,注意清空文件上传框的方法,和普通方法有点不一样。

--upload.jsp

jsp 代码
  1. <%@ page language="java" contentType="text/html; charset=gb2312" %>  
  2. <%@ page import="com.jspsmart.upload.SmartUpload"%>  
  3.  
  4. <%  
  5.     //新建一个SmartUpload对象  
  6.     SmartUpload su = new SmartUpload();  
  7.  
  8.     //上传初始化  
  9.     su.initialize(pageContext);  
  10.  
  11.     // 设定上传限制  
  12.     //1.限制每个上传文件的最大长度。  
  13.     su.setMaxFileSize(10000000);  
  14.  
  15.     //2.限制总上传数据的长度。  
  16.     su.setTotalMaxFileSize(20000000);  
  17.  
  18.     //3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。  
  19.     su.setAllowedFilesList("doc,txt,jpg,rar,mid,waw,mp3,gif");  
  20.       
  21.     boolean sign = true;  
  22.       
  23.     //4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件和没有扩展名的文件。  
  24.     try {  
  25.         su.setDeniedFilesList("exe,bat,jsp,htm,html");  
  26.  
  27.         //上传文件  
  28.         su.upload();  
  29.         //将上传文件保存到指定目录  
  30.         su.save("c:\\");  
  31.  
  32.     } catch (Exception e) {  
  33.         e.printStackTrace();  
  34.         sign = false;  
  35.     }  
  36.     if(sign==true)  
  37.     {  
  38.         out.println("<script>parent.callback('upload file success')</script>");  
  39.     }else  
  40.     {  
  41.         out.println("<script>parent.callback('upload file error')</script>");  
  42.     }  
  43. %>  





upload.jsp 中只要注意最后输出的格式就可以了。其实原理就是输出一段js代码到 iframe 中,然后在iframe中来控制它的父页面。

    OK,至此一个无刷新的页面上传组件就做好了,
不要忘了在 WEB-INF/lib 下加上必须的 jspSmartUpload.jar 包。
    需要说明的是使用Iframe来上传,状态栏还是会有刷新的,因为iframe 中的页面刷新了嘛,但是外部页面,就是你所看到的页面是没有刷新的,所以也可以说是类似Ajax上传。

JSP_模拟AJAX实现无刷新文件上传 AJAX无法实现文件上传功能,原因是JavaScript安全限制不能对文件执行操作,但是通过IFRAME框架可以模拟实现无刷新效果。虽说是无刷新的,但状态栏会刷新一下。代码是一个JSP的示例。 立即下载

相关推荐

Ajax无刷新上传文件( jsp版本)

本文实现的文件上传也是无页面刷新的,可以说是一种"类似AJAX"方法。 开始之前先说两句无关的,其实在ajax出现之前,web应用也可以是无刷新的,那时大多通过IFrame来做到这一点。当然Ajax出现之后,人们一窝蜂地投奔Ajax 的阵营了,iFrame 就乏人问津了。但是用iFrame来实现无刷新上传文件确实一个很好的选择。ps:Ajax技术基本上可以说是由google公司带起来的,但少Gmail中上传文件用的还是 IFrame,所以说使用IFrame来上传文件是最好的选择。 我在这里这里用的技术是jsp,其实asp,php等也是一样可以这么实现的

ajax iframe jsp 无刷新上传文件

首先要说的就是 ajax 是无法实现上传文件的,可以想一下ajax与后台通信都是通过传递字符串,怎么能传递文件呢?其实出于安全考虑js是不能操作文件的,所以就不要再说用ajax来实现文件的上传了,这是不可能的。    而本文实现的文件上传也是无页面刷新的,可以说是一种"类似AJAX"方法。    开始之前先说两句无关的,其实在ajax出现之前,web应用也可以是无刷新的,那时大多通过IFrame来

xuewei97的专栏 1118

纯jsp实现文件上传(页面无刷新,表单数据可连续填写最后上传文件)

这是一个纯jsp实现的文件上传功能. 无页面刷新,表单数据可以依次连续填写,最后上传文件. 文件上传后将文件名和上传路径返回,供业务保存DB使用.

ajax无法文件上传

我是这样写的,ajax无法上传。研究一番后,我发现我有两地方出错了。

sinye的博客 690

jsp实现文件的上传与下载

主要讲解使用jspSmartupload组件在实现文件的上传与下载.欢迎学习交流,qq:634229897

JSP文件的上传和下载

使用Servlet进行文件的上传与下载,用到commons-fileupload-1.3.3.jar和commons-io-2.6.jar两个jar包。

MUI如何使用mui.ajax上传文件到服务器

可以使用mui.ajax实现文件上传,结合FormData来处理文件上传操作。以下是一个示例代码,文件从id="file"的input。

ydk1203的博客 479

FPGA音频处理入门:手把手教你用Verilog实现I2S接收模块(附完整代码)

本文详细介绍了如何使用Verilog在FPGA上实现I2S接收模块,涵盖I2S协议原理、Verilog架构设计、完整代码实现及优化技巧。通过实战案例,帮助开发者快速掌握数字音频处理技术,适用于嵌入式音频系统开发。

weixin_30335575的博客 417

web 开发之js---巧用iframe实现jsp无刷新上传文件

  首先要说的就是 ajax 是无法实现上传文件的,可以想一下ajax与后台通信都是通过传递字符串,怎么能传递文件呢?其实出于安全考虑js是不能操作文件的,所以就不要再说用ajax来实现文件的上传了,这是不可能的。    而本文实现的文件上传也是无页面刷新的,可以说是一种"类似AJAX"方法。    开始之前先说两句无关的,其实在ajax出现之前,web应用也可以是无刷新的,那时大多通过IFra...

weixin_34273481的博客 100

全自动数据分析 - Claude Code Sub-Agents:自动化数据分析工厂

别忘了!claude code也是agent框架,类似langgraph,crewAI,autogen等等agent框架。我改造claude code搞一个数据分析智能体AI。试试看行不行!:让数据分析变得像聊天一样简单!

liangdabiao的博客 1072

【Cadence 17.4实战】----- 基于MySQL与ODBC的企业级CIS数据库配置全攻略

本文详细介绍了如何在Cadence 17.4中配置基于MySQL与ODBC的企业级CIS数据库,提升硬件设计团队的元器件管理效率。通过实战案例和避坑指南,帮助读者掌握数据库部署、ODBC驱动配置及CIS参数映射等关键技巧,实现设计数据的实时同步与高效管理。

weixin_30591551的博客 327

使用隐藏的iframe 隐藏form提交,仿AJax无刷新提交,可以实现无刷新上传文件

 首先要说的就是 ajax 是无法实现上传文件的,可以想一下ajax与后台通信都是通过传递字符串,怎么能传递文件呢?其实出于安全考虑js是不能操作文件的,所以就不要再说用ajax来实现文件的上传了,这是不可能的。    而本文实现的文件上传也是无页面刷新的,可以说是一种"类似AJAX"方法。    开始之前先说两句无关的,其实在ajax出现之前,web应用也可以是无刷新的,那时大多通过IFrame

ylqmf的专栏 1万+

告别手动复制粘贴!用Python脚本+pywinauto实现PC微信消息自动发送(附完整源码)

本文详细介绍了如何利用Python和pywinauto实现PC微信消息的自动化发送,告别繁琐的手动操作。从环境搭建、UI控件定位到构建健壮的发送流程,再到高级功能扩展和项目打包部署,全面解析了自动化办公的实现方案,显著提升工作效率。

weixin_30315723的博客 583

JSP实现不刷新上传文件

<br />参考资料:http://www.javaeye.com/topic/81120<br /><br />文章写出来就是方便自己记忆,也给大家介绍点东西,其实上面的链接里面已经讲的很清楚了。<br /><br />  这一段时间在研究AJAX方面的一些东西,就像大家所知道的那样,AJAX最大的特点就是可以不刷新页面而实现数据的通信及更改页面信息。那么用AJAX进行后台通信传递字符串还是可以的,遇到上传文件该怎么办呢?基于安全考虑JS是不能直接进行文件操作的,那么我们该怎么办呢?只好又原始的FORM来

快乐就好 4615

windows10下 iperf3测试带宽

客户端输入:"iperf3.exe -u -c 服务器IP地址 -b 5g" //客户端给服务器发送udp数据包,最大带宽为5g。客户端输入:“iperf3.exe -c 服务器IP地址 -P 10“//表示客户端10路并行给服务器发送TCP包;上图可知:带宽是15Gbps(这里不知道为什么下面测试的UDP会比这里TCP慢 按道理UDP不可能比TCP慢的5.)3. 验证是否下载成功,在打开的窗口中输入“iperf3.exe -v”,会出现安装的版本,表示安装成功了。5. iperf3参数。

xiaoqixiaoguai的博客 5890

NVIDIA 2025 Board Design Engineer 校招笔试全解析:从基础门电路到理想放大器设计

本文详细解析了NVIDIA 2025届板级设计工程师校招笔试的核心考点与解题策略。内容涵盖从基础门电路、CMOS实现NOR门,到开关电源CCM/DCM模式波形分析与效率计算,以及理想运放电路设计与稳定性优化。旨在帮助考生构建硬件知识体系,掌握工程思维,顺利通过NVIDIA Board Design Engineer校招笔试。

weixin_29172201的博客 195

使用iframe无刷新上传文件,并获取返回值

使用iframe无刷新上传文件,并获取返回值项目中需要完成这样一个功能 新增一个用户,填写他的基本信息,并且还要上传他的头像,头像可以预览 项目使用springmvc开发的,还不是很了解,所以做的有点慢,不过总算是做出来了,应该还会有更好的方式大致上遇到了两个问题 1. 怎么无刷新上传文件,有用ajax的,但是感觉有点麻烦,而且后台代码不会写,所以选择了iframe… 2. 怎么获取表单su

曾经最动心的专栏 7070

15 RK3568 RTL8111 PCIE

我这边扩了三个网卡。pcie3.0拆分了1+1lane。需要注意自己的reset引脚修改为自身rtl引脚即可。1、调试pcie 扩展网卡 RTL8111。

qq_39451352的博客 179

Jsp ajax 实现无刷新上传文件

列表页:selectaddress.jsp js页:ajax_edit.js jsp处理页:editaddress.jsp 上传工具类:UploadUtil.java 思想:由于安全问题,javascript操纵不了文件, 导致ajax不能动态上传文件,所以选择了iframe, 列表页把form表单提交到一个隐式的iframe里面,设置表单的属性enctype='multip

萧若寒 6738

无人机视角下基于YOLOv5/v8/v10的车辆检测系统:从算法原理到UI界面实战

随着无人机技术的普及和智慧城市的发展,无人机视角下的车辆检测在交通监控、战场侦察、灾害救援等领域展现出巨大的应用价值。然而,无人机航拍图像存在目标尺度小、视角多变、背景复杂等挑战。本文深入探讨了如何利用YOLOv5、YOLOv8、YOLOv10三个代表性目标检测算法,构建一套完整的无人机车辆检测系统。文章不仅详细解析了各版本YOLO的核心技术演进,还提供了从数据集准备、模型训练、性能评估到基于PyQt5/PySide6的图形界面开发的完整代码实现。通过本文,读者将能够掌握构建无人机实时车辆检测系统的全流程技

YOLO 172

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ajax +jsp+iframe无刷新上传文件[转]

http://hi.baidu.com/zj360202/blog/item/f23e3711f929c774cb80c475.html ajax jsp 无刷新上传文件 2009-10-2616:43首先要说的就是 ajax 是无法实现上传文件的,可以想一下ajax与后台通信都是通过传递字符串,怎么能传递文件呢?其实出于安全考虑js是不能操作文件的,所以就不要再说用ajax...

133

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

使用iframe实现无刷新上传文件

很简单,如下代码:                                                                                                                           如上代码,只要设置一个隐藏的iframe,然后设置form的target为iframe的name属性的值,

sueep的专栏 589

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

使用Ajax实现无刷新上传文件

原文:http://dolphin-ygj.javaeye.com/blog/493619     众所周知ajax是使用了浏览器内部的XmlHttpRequest对象来传输XML数据的。既然是Xml的数据传输,那么传输的数据肯定是文本的,而文件上传则需要传输二进制的数据,显然用ajax是不可能的能传递文件呢?其实出于安全考虑js是不能操作文件的,所以就不要再说用ajax来实现文件的上传了,这是不可能的。    而本文实现的文件上传也是无页面刷新的,可以说是一种"类似AJAX"方法。     其实在aja

Anvil的专栏 1355

Ajax基于iframe文件上传

关于Ajax的文件上传我在网上查找了一些方法,一种方法用的是使用javascript读取客户端的文件内容并将其封装在HTTP的协议中,然后再上传给服务器,但我认为这样的做法对于用户来说是不安全的。于是查了一些相关的书,幸运的在《Ajax完全手册》找到了一个基于HTML标签的文件上传方法,特此总结 希望能对阅读的你有帮助: 总体的思想是将上传后的信息在页面是的iframe标签内显示,即将f

飘痕 3687
上一篇: js获取select标签选中的值
下一篇: jQuery操作option
cg_program
博客等级 码龄19年 245粉丝 147原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值