struts文件上传demo

简介: 后台代码
//前端代码
<%@ page language="java" contentType="text/html; charset=gb2312"
  pageEncoding="gb2312"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>上传文件</title>
  </head>
  <body>
  <!-- 上传文件表单定义 -->
  <s:form action="upload" method="post" enctype="multipart/form-data">
    <tr>
  <!-- 上传文件标签定义 -->
  <td>上传文件:<s:file name="file"></s:file></td>
  </tr>
  <tr>
  <td>再次上传文件:<s:file name="file"></s:file></td>
  </tr>
  <tr>
  <td align="left"><s:submit name="submit" value="提交"></s:submit></td>
  </tr>
  </s:form>
  </body>
</html>

后台代码

package action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
//文件上传Action
public class UploadAction extends ActionSupport {
  //上传文件存放路径
  private final static String UPLOADDIR = "/upload";
  //上传文件集合
  private List<File> file;
  //上传文件名集合
  private List<String> fileFileName;
  //上传文件内容类型集合
  private List<String> fileContentType;
  public List<File> getFile() {
    return file;
  }
  public void setFile(List<File> file) {
    this.file = file;
  }
  public List<String> getFileFileName() {
    return fileFileName;
  }
  public void setFileFileName(List<String> fileFileName) {
    this.fileFileName = fileFileName;
  }
  public List<String> getFileContentType() {
    return fileContentType;
  }
  public void setFileContentType(List<String> fileContentType) {
    this.fileContentType = fileContentType;
  }
  public String execute() throws Exception {
    for (int i = 0; i < file.size(); i++) {
      //循环上传每个文件
      uploadFile(i);
    }
    return "success";
  }
  //执行上传功能
  private void uploadFile(int i) throws FileNotFoundException, IOException {
    try {
      InputStream in = new FileInputStream(file.get(i));
      String dir = ServletActionContext.getRequest().getRealPath(UPLOADDIR);
      File uploadFile = new File(dir, this.getFileFileName().get(i));
      OutputStream out = new FileOutputStream(uploadFile);
      byte[] buffer = new byte[1024 * 1024];
      int length;
      while ((length = in.read(buffer)) > 0) {
        out.write(buffer, 0, length);
      }
      in.close();
      out.close();
    } catch (FileNotFoundException ex) {
      ex.printStackTrace();
    } catch (IOException ex) {
      ex.printStackTrace();
    }
  }
}
目录
打赏
0
0
0
0
235
分享
相关文章
阿里云-DataWorks- ODPS SQL开发3-日期与字符、数学运算、聚合函数函数
阿里云-DataWorks- ODPS SQL开发3 本文主要讲解日常大量会接触到的一些常用的日期与字符、数学运算、聚合函数函数。
解决传入的请求具有过多的参数,该服务器支持最多 2100 个参数
解决传入的请求具有过多的参数,该服务器支持最多 2100 个参数
阿里云优惠券最新领取(2023年最新)
阿里云优惠券最新领取(2023年最新),2023年阿里云优惠活动大全如阿里云新人特惠、学生服务器、免费云服务器、域名1元购、阿里云CLUB领券中心等,阿里云服务器包括云服务器ECS和轻量应用服务器配置优惠价格和购买攻略完整版,阿里云百科分享阿里云服务器优惠活动大全和代金券领取
1909 0
阿里云优惠券最新领取(2023年最新)
Python 自动化指南(繁琐工作自动化)第二版:二十、使用 GUI 自动化控制键盘和鼠标
Python 自动化指南(繁琐工作自动化)第二版:二十、使用 GUI 自动化控制键盘和鼠标
435 0
GitHub标星35k+微服务深度原理实践进阶PDF,竟让阿里换下了Dubbo
最近一个粉丝分享了他悲惨的阿里面试故事,好不容易冲进三面,最后凉了! 关键在于微服务部分没回答好。 本人自己说在看到这些面试真题之后人都是懵的,之前这方面也没有很重视,结局就很可惜了。 今天先结合我这个粉丝的经历和面的题,分析一下微服务,以及我在这方面的学习经验也给大家分享一下。
一文学会LabVIEW调用动态链接库DLL生成VI
大家都知道,LabVIEW在做大型项目的时候,我们不可能把所有的函数全部展示在主VI中,所以肯定会使用到子VI,子VI的有两种,一种是直接使用LabVIEW中的函数生成功能的VI,还有一种方式就是调用动态链接库DLL生成相应功能的VI,今天给大家介绍一下调用动态链接库DLL生成VI。本笔记为笔者在项目中记录,为方便之后查看,同时也希望能帮助有需要的朋友。
一文学会LabVIEW调用动态链接库DLL生成VI
SpringBoot2.x系列教程30--H2内存数据库使用教程详解
前言 我们在开发或学习时,有时候我们想编写一个数据库操作的小demo,但又不想利用MySQL、Oracle等数据库进行建库建表操作,因为我只想写个小案例,感觉没必要弄个很大很麻烦的数据库。而且这个案例中的数据用完之后就不再需要了,所以也不需要进行数据的持久化。那有没有什么办法可以满足我们的这个需求呢? 既然你提了需求,那么 壹哥 就想办法满足你的需求,今天壹哥给大家介绍一个可以不进行持久化操作,用起来也没有那么麻烦的数据库,就是H2内存数据库! H2是一款内存数据库,适合我们在开发阶段、学习阶段调试代码使用,并不适用于生产阶段,可以满足我们学习与调试代码的需求。接下来就跟着我来学习一下这个
778 0
JSR 269插件化注解处理实践(以模拟Lombok自动生成getter/setter为例)
JSR 269是jdk1.6中引入的,在此之前,开发者只能在运行期对注解进行处理,而JSR 269允许开发这在编译期对注解进行处理,以此可以完成很多java不支持的特性,甚至创造新的语法糖。大名鼎鼎的lombok就是基于JSR 269来实现的。1. 原理介绍javac的编译过程如下图所示:可以看到JSR 269,也就是注解处理在编译产生抽象语法树AST之后,在此处插入一些逻辑,并且可以对AST进行
974 0
JSR 269插件化注解处理实践(以模拟Lombok自动生成getter/setter为例)
面试官:MySQL 中的 varchar 最多能存储多少个字符?大部分人都会答错。。。(2)
面试官:MySQL 中的 varchar 最多能存储多少个字符?大部分人都会答错。。。(2)
979 0
面试官:MySQL 中的 varchar 最多能存储多少个字符?大部分人都会答错。。。(2)
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等