Struts2 上传文件

339 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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、目录结构

image-20221010230627130.png

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、运行截图

Snipaste_2022-09-27_23-04-54.png

2、成功跳转页面

Snipaste_2022-09-27_23-18-52.png 3、上传成功截图

Snipaste_2022-09-27_23-19-47.png

总结

  以上就是Struts2 框架实现文件上传功能,主要还是通过java的输入输出流来实现,在日常学习中一定要重视基础,这样才能建立完整的知识结构,有助于我们的更好发展,本文的分享到此结束。