jsp中使用jquery的ajaxfileupload插件怎么实现异步上传
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp中使用jquery的ajaxfileupload插件怎么实现异步上传相关的知识,希望对你有一定的参考价值。
参考技术A JSP页面中引入的script代码<script>
function
ajaxFileUpload()
$("#loading").ajaxStart(function()
$(this).show();
)//开始上传文件时显示一个图片
.ajaxComplete(function()
$(this).hide();
);//文件上传完成将图片隐藏起来
$.ajaxFileUpload(
url:'AjaxImageUploadAction.action',//用于文件上传的服务器端请求地址
secureuri:false,//一般设置为false
fileElementId:'imgfile',//文件上传空间的id属性
<input
type="file"
id="imgfile"
name="file"
/>
dataType:
'json',//返回值类型
一般设置为json
success:
function
(data,
status)
//服务器成功响应处理函数
alert(data.message);//从服务器返回的json中取出message中的数据,其中message为在struts2中定义的成员变量
if(typeof(data.error)
!=
'undefined')
if(data.error
!=
'')
alert(data.error);
else
alert(data.message);
,
error:
function
(data,
status,
e)//服务器响应失败处理函数
alert(e);
)
return
false;
</script>
struts.xml配置文件中的配置方法:
<struts>
<package
name="struts2"
extends="json-default">
<action
name="AjaxImageUploadAction"
class="com.test.action.ImageUploadAction">
<result
type="json"
name="success">
<param
name="contentType">text/html</param>
</result>
<result
type="json"
name="error">
<param
name="contentType">text/html</param>
</result>
</action>
</package>
</struts>
上传处理的Action
ImageUploadAction.action
package
com.test.action;
import
java.io.File;
import
java.io.FileInputStream;
import
java.io.FileOutputStream;
import
java.util.Arrays;
import
org.apache.struts2.ServletActionContext;
import
com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public
class
ImageUploadAction
extends
ActionSupport
private
File
imgfile;
private
String
imgfileFileName;
private
String
imgfileFileContentType;
private
String
message
=
"你已成功上传文件";
public
File
getImgfile()
return
imgfile;
public
void
setImgfile(File
imgfile)
this.imgfile
=
imgfile;
public
String
getImgfileFileName()
return
imgfileFileName;
public
void
setImgfileFileName(String
imgfileFileName)
this.imgfileFileName
=
imgfileFileName;
public
String
getImgfileFileContentType()
return
imgfileFileContentType;
public
void
setImgfileFileContentType(String
imgfileFileContentType)
this.imgfileFileContentType
=
imgfileFileContentType;
public
String
getMessage()
return
message;
public
void
setMessage(String
message)
this.message
=
message;
@SuppressWarnings("deprecation")
public
String
execute()
throws
Exception
String
path
=
ServletActionContext.getRequest().getRealPath("/upload/mri_img_upload");
String[]
imgTypes
=
new
String[]
"gif",
"jpg",
"jpeg",
"png","bmp"
;
try
File
f
=
this.getImgfile();
String
fileExt
=
this.getImgfileFileName().substring(this.getImgfileFileName().lastIndexOf(".")
+
1).toLowerCase();
/*
if(this.getImgfileFileName().endsWith(".exe"))
message="上传的文件格式不允许!!!";
return
ERROR;
*/
/**
*
检测上传文件的扩展名是否合法
*
*/
if
(!Arrays.<String>
asList(imgTypes).contains(fileExt))
message="只能上传
gif,jpg,jpeg,png,bmp等格式的文件!";
return
ERROR;
FileInputStream
inputStream
=
new
FileInputStream(f);
FileOutputStream
outputStream
=
new
FileOutputStream(path
+
"/"+
this.getImgfileFileName());
byte[]
buf
=
new
byte[1024];
int
length
=
0;
while
((length
=
inputStream.read(buf))
!=
-1)
outputStream.write(buf,
0,
length);
inputStream.close();
outputStream.flush();
catch
(Exception
e)
e.printStackTrace();
message
=
"文件上传失败了!!!!";
return
SUCCESS;
转载,仅供参考。
jQuery 获取jsp页面中用iframe引入的jsp页面中的值
<iframe scrolling="no" src="<c:url value=‘/unitBaseperson/view.do?para=9&op=send&type=xls‘/>" id="main" frameborder="0" width="400"></iframe> <!--在a.jsp页面中-->
假如我的jsp页面包含这样一个frame,这个frame引入的jsp中包含如下一个input框
<input id="uploadPara" name="uploadPara" type="hidden" value="" /> <!--在b.jsp页面中-->
父页面叫a.jsp ,iframe引入的这个页面叫b.jsp
要在a.jsp页面中获取b.jsp页面中id=uploadPara输入框的值,有如下做法:
1.对ie有效,对谷歌和火狐无效
$(window.frames["main"].document).find("#uploadPara").val();
2.对ie,火狐,谷歌都有效
$("iframe").contents().find("#uploadPara").val();
以上是关于jsp中使用jquery的ajaxfileupload插件怎么实现异步上传的主要内容,如果未能解决你的问题,请参考以下文章
jsp中使用jquery的ajaxfileupload插件怎么实现异步上传