Ajax方式提交带文件上传的表单及隐藏iframe应用

赤道旱鸭子

赤道旱鸭子

2016-02-19 10:19

下面图老师小编要跟大家分享Ajax方式提交带文件上传的表单及隐藏iframe应用,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!

一般的表单都是通过ajax方式提交,所以碰到带文件上传的表单就比较麻烦。基本原理就是在页面增加一个隐藏iframe,然后通过ajax提交除文件之外的表单数据,在表单数据提交成功之后的回调函数中,通过form单独提交文件,而这个提交文件的form的target就指向前述隐藏的iframe。

html 代码

代码如下:

html
body
form action="upload.jsp" id="form1" name="form1"encType="multipart/form-data" method="post"target="hidden_frame"
inputtype="file" id="file" name="file"style="width:450"
INPUTtype="submit" value="上传文件"spanid="msg"/span
br
fontcolor="red"支持JPG,JPEG,GIF,BMP,SWF,RMVB,RM,AVI文件的上传/font
iframe name='hidden_frame' id="hidden_frame"style='display:none'/iframe
/form
/body
/html
scripttype="text/javascript"
functioncallback(msg)
{
document.getElementByIdx_x_x("file").outerHTML =document.getElementByIdx_x_x("file").outerHTML;
document.getElementByIdx_x_x("msg").innerHTML = "fontcolor=red"+msg+"/font";
}
/script

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

upload.jsp9Dhjsp 代码
代码如下:

%@ page language="java" contentType="text/html; charset=gb2312"%
%@ pageimport="com.jspsmart.upload.SmartUpload"%
%
//新建一个SmartUpload对象
SmartUploadsu = newSmartUpload();
//上传初始化
su.initialize(pageContext);
//设定上传限制
//1.限制每个上传文件的最大长度。
su.setMaxFileSize(10000000);
//2.限制总上传数据的长度。
su.setTotalMaxFileSize(20000000);
//3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。
su.setAllowedFilesList("doc,txt,jpg,rar,mid,waw,mp3,gif");
boolean sign= true;
//4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件和没有扩展名的文件。
try{
su.setDeniedFilesList("exe,bat,jsp,htm,html");
//上传文件
su.upload();
//将上传文件保存到指定目录
su.save("c://");
} catch(Exception e) {
e.printStackTrace();
sign = false;
}
if(sign==true)
{
out.println("scriptparent.callback('upload filesuccess')/script");
}else
{
out.println("scriptparent.callback('uploadfileerror')/script");
}
%

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

OK,至此一个无刷新的页面上传组件就做好了,不要忘了在 WEB-INF/lib 下加上必须的jspSmartUpload.jar 包。

需要说明的是使用Iframe来上传,状态栏还是会有刷新的,因为iframe中的页面刷新了嘛,但是外部页面,就是你所看到的页面是没有刷新的,所以也可以说是类似Ajax上传

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)
展开更多 50%)
分享

猜你喜欢

Ajax方式提交带文件上传的表单及隐藏iframe应用

Web开发
Ajax方式提交带文件上传的表单及隐藏iframe应用

ajax(iframe)无刷新提交表单、上传文件

Web开发
ajax(iframe)无刷新提交表单、上传文件

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

ajax 文件上传应用简单实现

Web开发
ajax 文件上传应用简单实现

jquery ajax提交表单数据的两种方式

Web开发
jquery ajax提交表单数据的两种方式

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

JQuery打造PHP的AJAX表单提交实例

Web开发
JQuery打造PHP的AJAX表单提交实例

解决ajax提交表单时中文乱码的问题

Web开发
解决ajax提交表单时中文乱码的问题

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

android layout XML解析错误的解决方法

android layout XML解析错误的解决方法

Excel导入数据库时出现的文本截断问题解决方案

Excel导入数据库时出现的文本截断问题解决方案
下拉加载更多内容 ↓