在上一篇中给大家列出的单个文件的上传,那么这一篇咱们讲讲上传多个文件改怎么作呢?由于过程和上传单个文件的类似,所以在这里不细说,相信大家都能看懂,看不懂的可以在评论区留言,我看到之后会及时回复的!!

咱们开门见山的来吧

1.创建个jsp表单页面,主要就是上传多个文件:

  <body><s:form action="upload.action" method="post" enctype="multipart/form-data"><s:textfield name="file" label="标题"/><br/><%-- <s:file name="upload" label="选择文件"/><br/> --%><s:file name="mupload" label="选择文件1"/><br/><s:file name="mupload" label="选择文件2"/><br/><s:file name="mupload" label="选择文件3"/><br/><s:submit name="submit" value="上传文件"/></s:form></body>

2.我们接下来去写一下UploadAction里面:

package org.web;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport {private File[] mupload;                       //封装上传文件的属性(多个)private String[] muploadContentType;          //封装上传文件的类型(多个)private String[] muploadFileName;             //封装上传文件的名称(多个)private String msavePath;                     //获取文件上传的路径(多个)//实现文件的多个上传public String execute() throws IOException{byte[] buffer=new byte[1024];for (int i = 0; i < mupload.length; i++) {//获取物理路径"/upload"String path=ServletActionContext.getServletContext().getRealPath(savePath);FileInputStream fis=new FileInputStream(getMupload()[i]);FileOutputStream fos=new FileOutputStream(path+"/"+getMuploadFileName()[i]);int length=fis.read(buffer);while (length>0) {//每次写入length长度的内容fos.write(buffer,0,length);length=fis.read(buffer);}fis.close();fos.flush();fos.close();}return SUCCESS;}public File[] getMupload() {return mupload;}public void setMupload(File[] mupload) {this.mupload = mupload;}public String[] getMuploadContentType() {return muploadContentType;}public void setMuploadContentType(String[] muploadContentType) {this.muploadContentType = muploadContentType;}public String[] getMuploadFileName() {return muploadFileName;}public void setMuploadFileName(String[] muploadFileName) {this.muploadFileName = muploadFileName;}public String getMsavePath() {return msavePath;}public void setMsavePath(String msavePath) {this.msavePath = msavePath;}}

3.nice,这里面已经搞定,咱们就移步到struts.xml里面配置一下就可以了

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd">
<struts><package name="default" namespace="/" extends="struts-default"><!-- 文件上传 --><action name="upload" class="org.web.UploadAction"><param name="savePath">/upload</param><result name="success">/upload_suc.jsp</result></action></package>
</struts>

最后发布运行就OK了。

Struts文件上传与下载详解 _上传多个文件相关推荐

  1. Struts文件上传与下载详解_上传单个文件

    大家都知道Servlet上传文件的时候用的是commons-fileupload插件上传的,但是过程极其的麻烦,同样Struts2也有自带的文件上传,但是过程比Servlet里面的简单了不少,接下来请 ...

  2. Struts文件上传与下载详解_文件的下载

    在 两篇我们主要说的是文件的上传,既然有上传那就有下载,那么咱们看一下struts里面是怎么个下载法! 1.写个文件下载的表单页面: <a href="downLoad.action? ...

  3. FTP服务器ip地址修改,文件上传和下载详解

    FTP服务器搭建FTP服务器搭建详细步骤 - Wc&Yd博客 - CSDN博客 一. ip地址修改. 计算机-管理-服务器和应用程序,绑定点击ip地址即可修改. 编辑修改. 修改完成,需重新启 ...

  4. nodeJs中间件Multer详解_使用express实现本地文件/图片上传到服务器指定目录

    最终实现的效果,更改Input的值后,将图片显示出来.输入描述信息,提交后,图片上传到后台对应的路径下. Multer Multer 是一个node.js中间件,用于处理 multipart/form ...

  5. java 字符串池 原理_《Java虚拟机原理图解》1.2.2、Class文件中的常量池详解(上)...

    注意: 对于某个类而言,其class文件中至少要有两个CONSTANT_Class_info常量池项,用来表示自己的类信息和其父类信息.(除了java.lang.Object类除外,其他的任何类都会默 ...

  6. 华为荣耀3c语言设置在哪个文件夹,(科普)详解Android系统SD卡各类文件夹名称...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 系统数据类--系统文件存储相关文件夹 1..android_secure:官方app2sd的产物,存储了相关的软件使用认证验证,删除之后SD卡中的软件将无 ...

  7. hadoop java move_Hadoop上Data Locality的详解

    Hadoop上Data Locality的详解 Hadoop上的Data Locality是指数据与Mapper任务运行时数据的距离接近程度(Data Locality in Hadoop refer ...

  8. java spring mvc 上传_Java Spring MVC 上传下载文件配置及controller方法详解

    下载: 1.在spring-mvc中配置(用于100M以下的文件下载) 下载文件代码 @RequestMapping("/file/{name.rp}") public Respo ...

  9. linux上传文件命令ftp put,Linux ftp 命令行中下载文件get与上传文件put的命令应用详解...

    介绍:从本地以用户anok登录的机器192.168.0.16上通过ftp远程登录到192.168.0.6的ftp服务器上,登录用户名是peo.以下为使用该连接做的实验. 查看远程ftp服务器上用户pe ...

最新文章

  1. 宏基因组实战10. 绘制圈图-Circos安装与使用
  2. movavi video suite2020中文版
  3. 我的世界java8_《我的世界》java8 64服务器mod
  4. 用计算机语言画曲线,用C语言控制台画简单的曲线
  5. MySQL的4大版本
  6. github中删除已建仓库(二)
  7. 什么是路由器交换机?路由器交换机介绍!
  8. JDK下载与安装、 Eclipse下载与使用、 Tomcat下载与使用、 MySQL安装与使用
  9. 无限网盘,36个T,360网盘无限空间的申请方法www.credream.com
  10. Elasticsearch 2.3.0 重建索引
  11. 酷盘API C# 测试版
  12. python是干什么用的-使用Python究竟可以做什么?下面是Python的3个主要应用
  13. java web 题_Java+web考试题预备
  14. ajax上传文件formData
  15. magisk卸载内置软件_手机发烧友必备之 Magisk
  16. 【python】词云图制作
  17. iOS崩溃日志ips文件解析
  18. 微信生成带参数二维码以及获取此二维码参数
  19. 浏览器兼容video视频播放的多种方法
  20. DVD-Video 解谜 - VOB文件

热门文章

  1. linux 的网络操作与配置文件,Linux常用文件与网络操作命令速记指南
  2. bigdecimal 平均数_MapReduce实例-必须用Combine--求平均数
  3. asp后台调用产品数据_后台产品经理,需掌握这些数据交互知识
  4. MQ问题集(kafka主从同步与高可用,MQ重复消费、幂等)
  5. Codeforces Round #622 (Div. 2) D. Happy New Year 状压dp
  6. AcWing 1303. 斐波那契前 n 项和
  7. 201609-5 祭坛
  8. 一般图带权多重匹配(欧拉图+最小费用流)
  9. [2021-06-19] 提高组新手副本Ⅱ(联网,欧几里得,分解树,开关灯)
  10. ybtoj洛谷P3268:圆的异或并(扫描线)