持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情
前言
本教程是 Struts2 框架实现文件上传功能,供大家参考学习,文件上传下载是我们日常经常使用到的功能,Struts2 实现也特别简单,今天我们来学习一下文件上传这一小功能。
本教程附带源代码,通过一个小demo,来感受一下文件上传的实现。
1、需求分析
上传就是将信息从 个人计算机(本地计算机)传送至中央计算机(远程计算机)系统上,让网络上的人都能看到。将制作好的网页、文字、图片、视频等通过Web或者Ftp传送至互联网上的服务器系统,这一过程称为上传。
我们需求是在网页中选择我们要上传的文件内,上传到服务器上。
2、实现思路
- 1.首先创建一个项目,名为 Struts-File
- 2.创建类命名为 UploadAction.java
- 3.在根目录下,创建一个 xml 文件,名为 struts.xml
- 4.把 jar 包导入 lib 目录下
- 5.在 web.xml 中配置过滤器
- 6.编写视图jsp等文件
3、目录结构
4、具体实现
UploadAction.java来实现文件上传的功能。
package sqgxy.xmp.action;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;
public class UploadAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private List<File> upload;
private List<String> uploadFileName;
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
if(upload != null ){
for(int i=0;i<upload.size();i++){
InputStream inputStream = new FileInputStream(upload.get(i));
OutputStream outputStream = new FileOutputStream("D:\"+getUploadFileName().get(i));
byte buffer[] = new byte[1024];
int count =0;
while ((count=inputStream.read(buffer))>0){
outputStream.write(buffer,0,count);
}
inputStream.close();
outputStream.close();
}
return SUCCESS;
}
return super.execute();
}
/**
* Get
* Set
* @return
*/
public List<File> getUpload() {
return upload;
}
public void setUpload(List<File> upload) {
this.upload = upload;
}
public List<String> getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(List<String> uploadFileName) {
this.uploadFileName = uploadFileName;
}
}
struts.xml负责页面的跳转。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="default" namespace="/default" extends="struts-default">
<action name="upload" class="sqgxy.xmp.action.UploadAction" >
<!--结果为字符串"success"时,跳转至登录成功页面-->
<result name="success">/success.jsp</result>
<!--结果为字符串"error"时,跳转至登录成功页面-->
<result name="error">/error.jsp</result>
<!--结果为字符串"input"时,跳转至登录成功页面-->
<result name="input">/index.jsp</result>
</action>
</package>
<constant name="struts.multipart.saveDir" value="/tmp"></constant>
</struts>
5、效果演示
1、运行截图
2、成功跳转页面
3、上传成功截图
总结
以上就是Struts2 框架实现文件上传功能,主要还是通过java的输入输出流来实现,在日常学习中一定要重视基础,这样才能建立完整的知识结构,有助于我们的更好发展,本文的分享到此结束。