Struts2之文件上传
2016-01-25 19:37
417 查看
在变成过程中难免会遇到文件上传和下载功能,比方说我们所做的系统中有些需要上传附件文档。对于这些,Struts2已经帮我们封装好了,只需要按照一定规则来就可以。下面先来看看文件上传功能:
一、单个文件上传:
1、前台:
1)上传文件页面(在这特别注意,上传文件的form的enctype必须是multipart/form-data):upload.jsp
<form action="fileUpload.action" method="post" enctype="multipart/form-data">
username:<input type="text" name="username"><br>
file:<input type="file" name="file"><br>
<input type="submit" value="submit">
</form>
2)上传后跳转页面:uploadResult.jsp
<body>
username:<s:property value="username" /><br>
name:<s:property value="fileFileName" /><br>
type:<s:property value="fileContentType" /><br>
</body>
2、对应的struts.xml文件中的Action(和平时配置的action是一个样子的)
<struts>
<!-- 设置文件上传临时目录和上传文件的大小限制 -->
<constant name="struts.multipart.saveDir" value="/tmp"/>
<constant name="struts.multipart.maxSize" value="1048576000"/>
<package name="struts2" extends="struts-default">
<action name="fileUpload" class="com.tgb.struts2.UploadAction">
<result name="success">/fileUploadResult.jsp</result>
</action>
</package>
</struts>
3、Action类:UploadAction类
public class UploadAction extends ActionSupport {
private String username;
//Struts封装好的,直接用下面的属性即可.
private File file;
private String fileFileName;
private String fileContentType;
//get、set方法省略...
@Override
public String execute() throws Exception {
//获取上传文件的路径
String root=ServletActionContext.getRequest().getRealPath("/upload");
//读取文件内容
InputStream is=new FileInputStream(file);
//将内容写到临时文件destFile中
File destFile=new File(root, fileFileName);
//将文件写到磁盘上
OutputStream os=new FileOutputStream(destFile);
byte[] buffer=new byte[400];
int length=0;
while (-1 !=(length=is.read(buffer))) {
os.write(buffer,0,length);
}
is.close();
os.close();
//跳转到成功页面
return SUCCESS;
}
}
上面讲述的是单个文件的上传,除此之外,如果遇到批量上传的话,不必担心,来一个循环就帮我们很好的解决了该问题,下面来看多个文件上传的例子:
二、多个文件上传
1、前台:
1)fileUpload.jsp
<form action="fileUpload2.action" method="post" enctype="multipart/form-data">
username:<input type="text" name="username"><br>
file:<input type="file" name="file"><br>
file2:<input type="file" name="file"><br>
file3:<input type="file" name="file"><br>
<input type="submit" value="submit">
</form>
2)fileUploadResult.jsp
<body>
username:<s:property value="username"/> <br>
<s:iterator value="fileFileName" id="f">
<s:property value="#f"/><br>
</s:iterator>
</body>
2、对应的struts.xml文件中的Action
<struts>
<!-- 设置文件上传临时目录和上传文件的大小限制 -->
<constant name="struts.multipart.saveDir" value="/tmp"/>
<constant name="struts.multipart.maxSize" value="1048576000"/>
<package name="struts2" extends="struts-default">
<action name="fileUpload2" class="com.tgb.struts2.UploadAction2">
<result name="success">/fileUploadResult2.jsp</result>
</action>
</package>
</struts>
3、UploadAction类
public class UploadAction2 extends ActionSupport {
private String username;
private List<File> file;
private List<String> fileFileName;
private List<String> fileContentType;
//get、set方法省略...
@Override
public String execute() throws Exception {
for (int i = 0; i < file.size(); i++) {
String root=ServletActionContext.getRequest().getRealPath("/upload");
InputStream is=new FileInputStream(file.get(i));
File destFile=new File(root, fileFileName.get(i));
OutputStream os=new FileOutputStream(destFile);
byte[] buffer=new byte[400];
int length=0;
while (-1 !=(length=is.read(buffer))) {
os.write(buffer,0,length);
}
is.close();
os.close();
}
return SUCCESS;
}
}
一、单个文件上传:
1、前台:
1)上传文件页面(在这特别注意,上传文件的form的enctype必须是multipart/form-data):upload.jsp
<form action="fileUpload.action" method="post" enctype="multipart/form-data">
username:<input type="text" name="username"><br>
file:<input type="file" name="file"><br>
<input type="submit" value="submit">
</form>
2)上传后跳转页面:uploadResult.jsp
<body>
username:<s:property value="username" /><br>
name:<s:property value="fileFileName" /><br>
type:<s:property value="fileContentType" /><br>
</body>
2、对应的struts.xml文件中的Action(和平时配置的action是一个样子的)
<struts>
<!-- 设置文件上传临时目录和上传文件的大小限制 -->
<constant name="struts.multipart.saveDir" value="/tmp"/>
<constant name="struts.multipart.maxSize" value="1048576000"/>
<package name="struts2" extends="struts-default">
<action name="fileUpload" class="com.tgb.struts2.UploadAction">
<result name="success">/fileUploadResult.jsp</result>
</action>
</package>
</struts>
3、Action类:UploadAction类
public class UploadAction extends ActionSupport {
private String username;
//Struts封装好的,直接用下面的属性即可.
private File file;
private String fileFileName;
private String fileContentType;
//get、set方法省略...
@Override
public String execute() throws Exception {
//获取上传文件的路径
String root=ServletActionContext.getRequest().getRealPath("/upload");
//读取文件内容
InputStream is=new FileInputStream(file);
//将内容写到临时文件destFile中
File destFile=new File(root, fileFileName);
//将文件写到磁盘上
OutputStream os=new FileOutputStream(destFile);
byte[] buffer=new byte[400];
int length=0;
while (-1 !=(length=is.read(buffer))) {
os.write(buffer,0,length);
}
is.close();
os.close();
//跳转到成功页面
return SUCCESS;
}
}
上面讲述的是单个文件的上传,除此之外,如果遇到批量上传的话,不必担心,来一个循环就帮我们很好的解决了该问题,下面来看多个文件上传的例子:
二、多个文件上传
1、前台:
1)fileUpload.jsp
<form action="fileUpload2.action" method="post" enctype="multipart/form-data">
username:<input type="text" name="username"><br>
file:<input type="file" name="file"><br>
file2:<input type="file" name="file"><br>
file3:<input type="file" name="file"><br>
<input type="submit" value="submit">
</form>
2)fileUploadResult.jsp
<body>
username:<s:property value="username"/> <br>
<s:iterator value="fileFileName" id="f">
<s:property value="#f"/><br>
</s:iterator>
</body>
2、对应的struts.xml文件中的Action
<struts>
<!-- 设置文件上传临时目录和上传文件的大小限制 -->
<constant name="struts.multipart.saveDir" value="/tmp"/>
<constant name="struts.multipart.maxSize" value="1048576000"/>
<package name="struts2" extends="struts-default">
<action name="fileUpload2" class="com.tgb.struts2.UploadAction2">
<result name="success">/fileUploadResult2.jsp</result>
</action>
</package>
</struts>
3、UploadAction类
public class UploadAction2 extends ActionSupport {
private String username;
private List<File> file;
private List<String> fileFileName;
private List<String> fileContentType;
//get、set方法省略...
@Override
public String execute() throws Exception {
for (int i = 0; i < file.size(); i++) {
String root=ServletActionContext.getRequest().getRealPath("/upload");
InputStream is=new FileInputStream(file.get(i));
File destFile=new File(root, fileFileName.get(i));
OutputStream os=new FileOutputStream(destFile);
byte[] buffer=new byte[400];
int length=0;
while (-1 !=(length=is.read(buffer))) {
os.write(buffer,0,length);
}
is.close();
os.close();
}
return SUCCESS;
}
}
相关文章推荐
- Linux Generating SSH Keys
- perl脚本实现限制ssh最大登录次数(支持白名单)
- rsync ssh 数据同步分析
- 搭建SSH时的思考和遇到的几个问题的解决方法
- SSH 使用原理 与解释
- SSH整合中 hibernate托管给Spring得到SessionFactory
- Linux VPS利用SSH重置ROOT密码的方法
- ssh,scp自动登陆的实现方法
- linux下使用ssh远程执行命令批量导出数据库到本地
- shell脚本实现ssh自动登录功能分享
- linux下ssh安装与scp命令使用详解
- ssh项目环境搭建步骤(web项目)
- 脚本实现SSH登录邮件报警
- Linux SSH 安全策略 限制 IP 登录方法
- 解决SSH连接超时的2个配置方法
- 用shell脚本防ssh和vsftpd暴力破解的详解讲解
- 内网ssh/mysql登录缓慢的解决方法
- Java实现SSH模式加密
- Linux sshd_config配置手册中文版