webwork.properties相关配置如下:
webwork.locale=zh_CN
webwork.multipart.parser=jakarta
webwork.i18n.encoding=GBK
上传页面:

<%...@pagelanguage="java"contentType="text/html;charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=GB18030">
<title>Inserttitlehere</title>
</head>
<body>
<formaction="upload.dhtml"method="post"enctype="multipart/form-data">
<inputtype="file"name="doc"/>
<inputtype="file"name="doc"/>
<inputtype="file"name="doc"/>
<inputtype="submit"value="submit"/>
</form>
</body>
</html>
Action:
packagech4.example1;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjavax.servlet.http.HttpServletRequest;
importcom.opensymphony.webwork.interceptor.ServletRequestAware;
importcom.opensymphony.xwork.ActionSupport;
/***//**
*@author$author
*/
publicclassUploadextendsActionSupportimplementsServletRequestAware...{
HttpServletRequestrequest=null;
Filedoc[];
StringdocContentType[];
StringdocFileName[];
publicStringexecute()throwsException
...{
StringuploadPath=request.getSession().getServletContext().getRealPath("//WEB-INF//upload//");
for(inti=0;i<doc.length;i++)...{
if(doc[i]!=null)...{
//此处重命名文件可以采用uuid,次出仅在每个文件名前多加了变量i
FileOutputStreamoutputStream=newFileOutputStream(uploadPath+File.separator+i+docFileName[i]);
FileInputStreamfileIn=newFileInputStream(doc[i]);
byte[]buffer=newbyte[1024];
intlen;
while((len=fileIn.read(buffer))>0)...{
outputStream.write(buffer,0,len);
}
fileIn.close();
outputStream.close();
System.out.println(docFileName[i]+"uploadsuccess");
}
}
returnNONE;
}
publicvoidsetServletRequest(HttpServletRequestrequest)...{
this.request=request;
}
publicFile[]getDoc()...{
returndoc;
}
publicvoidsetDoc(File[]doc)...{
this.doc=doc;
}

publicString[]getDocContentType()...{
returndocContentType;
}

publicvoidsetDocContentType(String[]docContentType)...{
this.docContentType=docContentType;
}

publicString[]getDocFileName()...{
returndocFileName;
}

publicvoidsetDocFileName(String[]docFileName)...{
this.docFileName=docFileName;
}
}
为了使用文件上传的特性,必须为所选择的多部份解析器(Multipartparser)包含下确的JAR文件,对于jakarta,相应的jar文件文件则是commons-fileupload.jar
webwork还有一种上传方法,就是将获得req转换成MultiPartRequestWrapper,不使用interceptor 然后进行上传
MultiPartRequestWrapper wrapper=(MultiPartRequestWrapper)request;
try{
File doc=wrapper.getFiles("doc")[0];
}
本文介绍Struts2框架中文件上传的功能配置及实现方法,包括webwork.properties配置、上传页面设计与Action处理逻辑,并提供了一种通过MultiPartRequestWrapper实现文件上传的备选方案。
2万+

被折叠的 条评论
为什么被折叠?



