(转载自http://blog.csdn.net/cd0425/article/details/4836803 )
前台js插件ajaxfileupload+jquery的包
function ajaxFileUpload() { $("#loading") .ajaxStart(function(){ $(this).show(); }) .ajaxComplete(function(){ $(this).hide(); }); $.ajaxFileUpload ( { url:'doajaxfileupload.action', secureuri:false, fileElementId:'fileToUpload', dataType: 'json', success: function (data, status) { if(typeof(data.error) != 'undefined') { if(data.error != '') { alert(data.error); }else { alert(data.msg); } } }, error: function (data, status, e) { alert(e); } } ) return false; }
json插件,下载地址:
http://jsonplugin.googlecode.com/files/jsonplugin-0.33.jar
struts.xml配置中的Action结果类型:
<package name="jsons" extends="json-default"> <action name="upFile" class="....."> <result type="json"> <param name="contentType">text/html</param> </result> </action> </package>
其中,contentType参数是一定要有的,否则浏览器总是提示将返回的JSON结果另存为文件,不会交给ajaxfileupload处理。这是因 为struts2 JSON Plugin默认的contentType为application/json,而ajaxfileupload则要求为text/html。