struts2上传文件是通过提交form表单的方式实现的,如果需要实现异步上传文件的话 ,就需要借助jquery的异步提交表单的功能了,要用到jquery.form.js文件。
首先要加载相关js文件:
<script language="JavaScript" src="<%=request.getContextPath()%>/jq/jquery-1.8.3.js"></script> <script language="JavaScript" src="<%=request.getContextPath()%>/jq/jquery.form.js"></script>
form标签:
<form id="upload" action="./admin/score/upload.do" method="post" enctype="multipart/form-data" > <div style="margin:30px 0px 0px 0px;"> <table> <tr > <td><label class="forminfo">上传文件:</label></td> <td><input id="file" type="file" name="file" style="border: thin solid #CCCCCC;"/></td> <td><input type="submit" value="提交文件" style="height:25px;width:80px;"/></td> </tr> </table> </form>
jquery代码:
$(function(){ $("#upload").submit(function(){ var first = $("#first").val(); var second = $("#second").val(); var third = $("#third").val(); $(this).ajaxSubmit({ data: {first:first,second:second,third:third }, dataType: "json", resetForm: true, success: function(data) { if(data.result != null){ //根据返回信息,更新提示窗口内容 $("#result").html(data.result); //显示提示窗口 $(".tip").fadeIn(200); } } }); } return false; }); });
解析:
首先获取表单的submit事件,然后在事件里调用ajaxSubmit方法,即能异步提交表单。
在方法中可以声明若干参数,按需选择
url 提交表单数据的URL
type 提交表单数据的方法get 或 post
data 需要提交的参数键值对列表
datatype 声明返回的数据类型,有xml 、json、script 三种,如果返回类型与声明的不同,则回调函数无法执行
resetForm 如果为true 则成功后重置form 表单
success 成功后的回调函数,执行成功后的操作。在我的例子里,根据返回的信息更新提示窗口的内容,然后显示提示窗口
最后执行完ajaxSubmit方法后,则需要return false ,以阻止页面中的form表单提交。
Action类中要声明对应的文件、文件名、文件类型,并有相应get 和set方法
private File file; private String fileFileName; private String fileContentType;
最后是Action方法:
public String upload() throws FileNotFoundException{ //获取项目上中指定的保存上传文件的文件夹路径 String path = ServletActionContext.getServletContext().getRealPath("/upload"); //打开上传文件输入流 FileInputStream fis = new FileInputStream(file); //打开目标文件夹输出流 FileOutputStream fos = new FileOutputStream(new File(path,fileFileName)); //输入流转成字节,并用输出流写入文件 byte[] b = new byte[1024]; int length = 0; try { while((length = fis.read(b))!=-1){ fos.write(b,0,b.length); //写入文件 } fis.close(); fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return SUCCESS; }
好了,文件异步上传步骤大概就是如此,希望能给学习者有一个合理的参考。
相关推荐
jquery+struts2实现异步刷新,是个不错的实例,可以结合到项目中使用,简单易懂。
jquery实现异步刷新的时候需要的架包
struts2+jquery+ajax实现了文件的异步上传,的MyEclipse编写的简单项目
struts2+ajax+jquery异步批量上传超大文件,单文件最大支持2G,一次文件数量,文件大小都可设置。简单明了。绝对可用,稍微懂点的就可以修改为自己所用。你值得拥有! 我会分享给大家更多更好的东西,希望支持!
自己整理的jquery+json+struts2异步传输的例子,包括异步提交form,异步传输json对象。
struts2+ajax+jquery异步批量上传超大文件.zip struts2+ajax+jquery异步批量上传超大文件.zip struts2+ajax+jquery异步批量上传超大文件.zip struts2+ajax+jquery异步批量上传超大文件.zip struts2+ajax+jquery异步...
MVC Struts2框架搭建,Jquery Ajax异步数据交互,内涵需要的jar包及ppt讲解
JQuery+struts+hibernate实现最简洁的功能完整的分页案例,数据添加支持异步提交表单,css美化表格,使用动态action处理数据,源码发布即可使用无需添加任何jar包,内有数据库脚本
struts2+jquery之form插件实现异步上传
一个jquery+json 数据传递的 实例工程,代码注释详细,很适合 初学者,这是我帮老弟打的,希望可以帮到其他人
struts2+jquery之form插件实现异步上传图片并显示
这圣思园张老师的一个上课演示文件,讲的是struts2+jquery+Ajax实现异步交互的简单例子。
jquery imgareaselect + ajaxfileupload + struts2实现图片的异步上传裁剪
异步加载数据利用struts2+jquery+json实现,具体代码如下,感兴趣的各位可以参考下哈,希望对大家有所帮助
利用jquery,实现界面的无刷新的上传。后台是struts。实例,可直接运行
讲述了JQuery,JSON,Struts2实现Ajax异步请求
2.Action里通过struts2-spring-plugin.jar插件自动根据名字注入。 3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。 4.在服务端分页查询功能,优点:实时性:跳页才查询。数据量小:只加载当前页的记录...
使用Jquery+Json异步实现省市级联,附加数据库省市数据库sql文件.
jquey配合josn实现两级网页菜单代码,二级的菜单联动特效,Author : TongFei 格式可更改为横行 也行 只需修改样式即可,url:菜单数据josn文件路径
NULL 博文链接:https://huibin.iteye.com/blog/586035