java struts2入门学习实例使用struts2快速实现多个文件上传.docx
- 文档编号:6991082
- 上传时间:2023-01-15
- 格式:DOCX
- 页数:11
- 大小:217.88KB
java struts2入门学习实例使用struts2快速实现多个文件上传.docx
《java struts2入门学习实例使用struts2快速实现多个文件上传.docx》由会员分享,可在线阅读,更多相关《java struts2入门学习实例使用struts2快速实现多个文件上传.docx(11页珍藏版)》请在冰豆网上搜索。
javastruts2入门学习实例使用struts2快速实现多个文件上传
一、错误提示信息配置
昨天说到更改默认错误配置信息,我测试很多遍,一直都不对。
下面贴出来,待以后有好方法了再补充吧。
首先新建一个properties文件,这里命名为testupload.properties,内容为:
struts.messages.error.file.too.large=\u6587\u4EF6\u592A\u5927{0}"{1}""{2}"{3}
struts.messages.error.content.type.not.allowed=\u6587\u4EF6\u7C7B\u578B\u4E0D\u5141\u8BB8!
{0}"{1}""{2}"{3}
struts.messages.error.file.extension.not.allowed=\u4E0D\u5141\u8BB8\u7684\u6269\u5C55\u540D!
{0}"{1}""{2}"{3}
这里将默认提示信息改为中文的。
upload.xml中内容如下:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN"
"http:
//struts.apache.org/dtds/struts-2.3.dtd">
--对上传文件总大小进行设置-->
--错误信息提示-->
/WEB-INF/upload_success.jsp
upload.jsp
--对系统的拦截器进行设置-->
--对单个上传文件的大小进行设置,5M-->
--对允许的文件扩展名进行设置,这里以英文逗号隔开-->
--对允许的文件类型进行设置,这里以英文逗号进行隔开-->
--显示引用默认的拦截器-->
二、多个文件上传
只需要更改upload.jsp中的部分内容即可:
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<%@tagliburi="/struts-tags"prefix="s"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
formaction="UploadAction"enctype="multipart/form-data"method="POST"> textfieldlabel="上传用户"name="username"/> filelabel="上传文件"name="upload"/> filelabel="上传文件"name="upload"/> filelabel="上传文件"name="upload"/> submitvalue="提交"/> form> 结果如下所示: 也可以将UploadAction.java中的file改为数组类型的,如下所示: packageaction; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileOutputStream; importjava.io.InputStream; importjava.io.OutputStream; importjavax.servlet.ServletContext; importorg.apache.struts2.ServletActionContext; importcom.opensymphony.xwork2.ActionSupport; /** *@ClassName: UploadAction *@Description: 文件上传 *@author: amosli *@email: amosli@ *@dateJan14,20141: 50: 28AM */ publicclassUploadActionextendsActionSupport{ privatestaticfinallongserialVersionUID=-8920466592471253212L; privateStringusername;//用户名 privateString[]uploadContentType;//上传文件的类型,(Fileupload拦截器传入的参数) privateFile[]upload;//上传的文件,(Fileupload拦截器传入的参数) privateString[]uploadFileName;//上传文件的真实文件名,(Fileupload拦截器传入的参数) publicvoidsetUsername(Stringusername){ this.username=username; } publicString[]getUploadContentType(){ returnuploadContentType; } publicvoidsetUploadContentType(String[]uploadContentType){ this.uploadContentType=uploadContentType; } publicFile[]getUpload(){ returnupload; } publicvoidsetUpload(File[]upload){ this.upload=upload; } publicString[]getUploadFileName(){ returnuploadFileName; } publicvoidsetUploadFileName(String[]uploadFileName){ this.uploadFileName=uploadFileName; } publicStringgetUsername(){ returnusername; } publicStringuploadMethod()throwsException{ ServletContextcontext=ServletActionContext.getServletContext(); Stringreal_path=context.getRealPath("/WEB-INF/upload/"); for(inti=0;i InputStreaminputStream=newFileInputStream(upload[i]); OutputStreamoutputStream=newFileOutputStream(real_path+"/"+uploadFileName); byte[]b=newbyte[1024]; intlen=0; while((len=inputStream.read(b))>0){ outputStream.write(b,0,len); } //关闭流 inputStream.close(); outputStream.close(); //删除tmp文件,最好是用tyrcatchfinally进行删除 //upload[i].delete(); } returnSUCCESS; } } ViewCode 这里没有立马删除是想做个演示,查看一下缓存文件空间生成了几个。 首先,将项目打包,生成war包,这里我用的是mvnpackage打的包。 其次,将tomcat启动,将成生的war包拷到webapp目录下。 最后,在浏览器演示多个文件上传。 演示结果如下图所示: 1、打开浏览器,上传a.txt,b.txt,c.txt三个文件 2、点击提交后,跳转到成功提示页面 3.查看相对应的文件目录,这里没有删除缓存,所以可以看到三个缓存文件 三、指定文件上传的路径 如何通过配置文件,手动指定文件的上传目录? 首先,在upload.xml中action标签中指定参数名为uploadPath,赋值为/home/amosli/develop/struts2_learn/ ................. 全部的upload.xml文件为: xmlversion="1.0"encoding="UTF-8"? > DOCTYPEstrutsPUBLIC "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN" "http: //struts.apache.org/dtds/struts-2.3.dtd"> --对上传文件总大小进行设置--> --错误信息提示--> /WEB-INF/upload_success.jsp upload.jsp --对系统的拦截器进行设置--> --对单个上传文件的大小进行设置,5M--> --对允许的文件扩展名进行设置,这里以英文逗号隔开--> --对允许的文件类型进行设置,这里以英文逗号进行隔开--> --显示引用默认的拦截器--> ViewCode 其次,在UploadAction.java中新建一个变量uploadPath,为其设置set方法。 同时在uploadMethod方法中将目标文件夹改为uploadPath. 即,UploadAction.java为: packageaction; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileOutputStream; importjava.io.InputStream; importjava.io.OutputStream; importcom.opensymphony.xwork2.ActionSupport; /** *@ClassName: UploadAction *@Description: 文件上传 *@author: amosli *@email: amosli@ *@dateJan14,20141: 50: 28AM */ publicclassUploadActionextendsActionSupport{ privatestaticfinallongserialVersionUID=-8920466592471253212L; privateStringusername;//用户名 privateString[]uploadContentType;//上传文件的类型,(Fileupload拦截器传入的参数) privateFile[]upload;//上传的文件,(Fileupload拦截器传入的参数) privateString[]uploadFileName;//上传文件的真实文件名,(Fileupload拦截器传入的参数) privateStringuploadPath; publicvoidsetUploadPath(StringuploadPath){ this.uploadPath=uploadPath; } publicvoidsetUsername(Stringusername){ this.username=username; } publicString[]getUploadContentType(){ returnuploadContentType; } publicvoidsetUploadContentType(String[]uploadContentType){ this.uploadContentType=uploadContentType; } publicFile[]getUpload(){ returnupload; } publicvoidsetUpload(File[]upload){ this.upload=upload; } publicString[]getUploadFileName(){ returnuploadFileName; } publicvoidsetUploadFileName(String[]uploadFileName){ this.uploadFileName=uploadFileName; } publicStringgetUsername(){ returnusername; } publicStringuploadMethod()throwsException{ //ServletContextcontext=ServletActionContext.getServletContext(); //Stringreal_path=context.getRealPath("/WEB-INF/upload/"); for(inti=0;i InputStreaminputStream=newFileInputStream(upload[i]); OutputStreamoutputStream=newFileOutputStream(uploadPath+"/"+uploadFileName[i]); byte[]b=newbyte[1024]; intlen=0; while((len=inputStream.read(b))>0){ outputStream.write(b,0,len); } //关闭流 inputStream.close(); outputStream.close(); //删除tmp文件,最好是用tyrcatchfinally进行删除 //upload[i].delete(); } returnSUCCESS; } } ViewCode 最后,运行效果如下:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java struts2入门学习实例使用struts2快速实现多个文件上传 struts2 入门 学习 实例 使用 快速 实现 文件 上传