和单个文件上传配置都是一样的,只是在action中接受参数时候,接受的是数组,不再是单个的文件。

一,action的实现:

public class MutableFilesUpload extends ActionSupport {

	private static final long serialVersionUID = 1L;

	public File[] uploadObjects;
public String[] uploadObjectsFileName;
public String[] uploadObjectsContentType; public String moreInfo; public String upload() { System.out.println(moreInfo); // 1.拿到ServletContext
ServletContext servletContext = ServletActionContext
.getServletContext();
// 2.调用realPath方法,获取根据一个虚拟目录得到的真实目录
String realPath = servletContext.getRealPath("/files");
// 3.如果这个真实的目录不存在,需要创建
File file = new File(realPath);
if (!file.exists()) {
file.mkdirs();
}
// 4.把文件存过去
// 剪切:把临时文件剪切指定的位置,并且给他重命名。 注意:临时文件没有了
for (int i = 0; i < uploadObjects.length; i++) {
System.out.println("one file name: " + uploadObjectsFileName[i]);
uploadObjects[i].renameTo(new File(file, uploadObjectsFileName[i]));
} return SUCCESS;
} }

  

二,配置action

<action name="mutable_uploads" class="gy.upload.MutableFilesUpload" method="upload">

  <!-- 指定(限制)上传文件的类型,定义局部拦截器,修改默认拦截器的属性 "fileUpload.maximumSize" :限制上传最大的文件大小。
"fileUpload.allowedTypes":允许上传文件的类型。 "fileUpload.allowedExtensions":允许上传文件的可扩展文件类型。 -->
  <interceptor-ref name="defaultStack">
    <param name="fileUpload.maximumSize">500000000</param>
    <param name="fileUpload.allowedTypes">text/plain,application/vnd.ms-powerpoint</param>
    <param name="fileUpload.allowedExtensions">.txt,.ppt</param>
  </interceptor-ref>   <result>/success.html</result>
  <!-- 出现错误自动会返回input结果,进入结果视图 -->
  <result name="input">/fail.html</result>
</action>

三,表单的实现

<body>
<form action="mutable_uploads" method="post"
enctype="multipart/form-data">
文件:<br>
<input type="file" name="uploadObjects"><br>
<input type="file" name="uploadObjects"><br>
more info:
<input type="text" name="moreInfo"><br>
<input type="submit" value="提交"><br>
</form>
</body>

  

  

(27) java web的struts2框架的使用-基于表单的多文件上传的更多相关文章

  1. (25) java web的struts2框架的使用-基于表单的文件上传

    一,首先创建一个表单页面 <body> <form action="uploads" method="post" enctype=" ...

  2. 【ASP.NET Web API教程】5.3 发送HTML表单数据:文件上传与多部分MIME

    原文:[ASP.NET Web API教程]5.3 发送HTML表单数据:文件上传与多部分MIME 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面 ...

  3. 基于hi-nginx的web开发(python篇)——表单处理和文件上传

    hi-nginx会自动处理表单,所以,在hi.py框架里,要做的就是直接使用这些数据. 表单数据一般用GET和POST方法提交.hi-nginx会把这些数据解析出来,放在form成员变量里.对pyth ...

  4. (22) java web的struts2框架的使用-struts配置文件

    1,配置文件的引用 struts中配置文件可以有多个,每个模块的包里面都可以单独设立一个struts配置文件. 主的配置文件,放在“src”文件夹下,可以引入其他配置文件,引入方式: <!-- ...

  5. (21) java web的struts2框架的使用

    在javaweb开发过程中,如果只使用servlet,jdbc,jsp进行开发,也可以遵从MVC的模式,这时候,servlet相当于control层,属于负责处理业务逻辑的控制器,同时也需要对获取和返 ...

  6. java web学习总结(十三) -------------------使用Session防止表单重复提交

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...

  7. java web 学习十三(使用session防止表单重复提交)

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...

  8. (24) java web的struts2框架的使用-action参数自动封装与类型转换

    structs可以对参数进行自动封装,做法也很简单. 一,action参数自动封装: 1,可以直接在action类中,声明public的属性,接受参数. 2,属性也是是private,如果是priva ...

  9. (23) java web的struts2框架的使用-struts动态调用和通配符

    一,动态查找 1,配置允许动态调用 <!-- 允许动态方法调用 --> <constant name="struts.enable.DynamicMethodInvocat ...

随机推荐

  1. BZOJ 4753 [Jsoi2016]最佳团体 ——01分数规划 树形DP

    要求比值最大,当然用分数规划. 二分答案,转化为选取一个最大的联通块使得它们的和大于0 然后我们直接DP. 复杂度$O(n^2\log {n})$ #include <map> #incl ...

  2. BZOJ 2820 YY的GCD ——莫比乌斯反演

    我们可以枚举每一个质数,那么答案就是 $\sum_{p}\sum_{d<=n}\mu(d)*\lfloor n / pd \rfloor *\lfloor m / pd \rfloor$ 直接做 ...

  3. BZOJ 3227 [Sdoi2008]红黑树(tree) ——贪心 动态规划

    首先可以想到一个贪心的方法,然后一层一层的合并. 也可以采用动态规划的方式,为了写起来好写,把点数*2+1,然后发现在本机上跑不过1500的数据. 交上去居然A掉了. 贪心 #include < ...

  4. 刷题总结——烽火传递(单调队列+dp)

    题目: 题目描述 烽火台又称烽燧,是重要的防御设施,一般建在险要处或交通要道上.一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息:夜晚燃烧干柴,以火光传递军情.在某两座城市之间有 n 个烽火台,每个烽火 ...

  5. response.sendRedirect()使用注意事项

    用response.sendRedirect做转向其实是向浏览器发送一个特殊的Header,然后由浏览器来做转向,转到指定的页面,所以用sendRedirect时,浏览器的地址栏上可以看到地址的变化. ...

  6. FGrowth算法

    一:背景 http://www.cnblogs.com/aijianiula/p/5397857.html 上节中,总结了频繁项集挖掘的最基本算法:Apriori算法.这篇文章写下它的改进算法FGro ...

  7. jquery知识汇总

    jQuery 选择器 选择器                  实例                                   选取 *                          $ ...

  8. php——两种无限级分类

    /** * 无级递归分类 TP框架 * @param int $assortPid 要查询分类的父级id * @param mixed $tag 上下级分类之间的分隔符 * @return strin ...

  9. Redis的内部运作机制

    本文将分五个部分来分析和总结Redis的内部机制,分别是:Redis数据库.Redis客户端.Redis事件.Redis服务器的初始化步骤.Redis命令的执行过程. 首先介绍一下Redis服务器的状 ...

  10. dbms_metadata.get_ddl的使用总结

    https://blog.csdn.net/newhappy2008/article/details/34823339