首先我们写一个单文件长传的fileupload.jsp:

 <body>
<s:fielderror></s:fielderror> <!-- 报错信息 -->
<s:form action="upload" method="post" enctype="multipart/form-data">//以二进制格式格式
文件:<s:file label="文件上传" name="java1234"></s:file> //文件
<s:submit value="提交"></s:submit>
</s:form>
</body>

写一个单文件上传FileuploadAction:

 public class FileuploadAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private File java1234;//文件
private String java1234FileName;//文件名称
private String java1234ContentType;//文件类型
public File getJava1234() {
return java1234;
}
public void setJava1234(File java1234) {
this.java1234 = java1234;
}
public String getJava1234FileName() {
return java1234FileName;
}
public void setJava1234FileName(String java1234FileName) {
this.java1234FileName = java1234FileName;
}
public String getJava1234ContentType() {
return java1234ContentType;
}
public void setJava1234ContentType(String java1234ContentType) {
this.java1234ContentType = java1234ContentType;
}
@Override
public String execute() throws Exception {
System.out.println("文件名称:"+java1234FileName);
System.out.println("文件类型"+java1234ContentType);
File destFile=new File("D:/"+java1234FileName);
FileUtils.copyFile(java1234, destFile);
return SUCCESS;
}
}

配置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>
<constant name="struts.multipart.maxSize" value="520000000"></constant>//文件的最大为520M
<package name="manager" extends="struts-default">
<action name="upload" class="com.java1234.action.FileuploadAction">
<result name="input">/fileupload.jsp</result>
<result name="success">/success.jsp</result>
<!-- <interceptor-ref name="fileUpload">可以设置拦截器对长传的文件进行拦截处理。
<param name="allowedTypes">image/bmp,image/x-png,image/gif,image/jpg,image/jpeg,audio/mp3</param>
<param name="maximumSize">15728640</param>15MB
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref> -->
</action>
</package>
</struts>

效果:

多文件上传:

filesupload.Jsp

 <body>
<s:fielderror></s:fielderror> <!-- 报错信息 -->
<s:form action="uploads" method="post" enctype="multipart/form-data">
<s:file label="文件上传1" name="java1234"></s:file>
<s:file label="文件上传2" name="java1234"></s:file>
<s:file label="文件上传3" name="java1234"></s:file>
<s:submit value="提交"></s:submit>
</s:form>
</body>

FilesUploadAction代码:

 public class FilesuploadAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private File[] java1234;//文件
private String[] java1234FileName;//文件名称
private String[] java1234ContentType;//文件类型
public File[] getJava1234() {
return java1234;
}
public void setJava1234(File[] java1234) {
this.java1234 = java1234;
} public String[] getJava1234FileName() {
return java1234FileName;
} public void setJava1234FileName(String[] java1234FileName) {
this.java1234FileName = java1234FileName;
}
public String[] getJava1234ContentType() {
return java1234ContentType;
}
public void setJava1234ContentType(String[] java1234ContentType) {
this.java1234ContentType = java1234ContentType;
}
@Override
public String execute() throws Exception {
for(int i=0;i<java1234.length;i++){
System.out.println("文件名称:"+java1234FileName[i]);
System.out.println("文件类型"+java1234ContentType[i]);
File destFile=new File("D:/"+java1234FileName[i]);
FileUtils.copyFile(java1234[i], destFile);
}
return SUCCESS;
}
}

使用数组进行处理。

下载文件jsp:

 <body>
<a href="download">文件下载</a>
</body>

FiledownloadAction代码:

 public class FiledownloadAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private String fileName;
public String getFileName() throws Exception{
fileName=new String(fileName.getBytes(),"IOS8859-1");
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public InputStream getInputStream()throws Exception{
File newfile=new File("D:/文件名.jpg");
this.fileName="文件名";
return new FileInputStream(newfile);
}
}

Struts.xml文件配置:

 <struts>
<constant name="struts.multipart.maxSize" value="520000000"></constant>
<package name="manager" extends="struts-default">
<action name="uploads" class="com.java1234.action.FilesuploadAction">
<result name="input">/filesupload.jsp</result>
<result name="success">/success.jsp</result>
</action>
<action name="download" class="com.java1234.action.FiledownloadAction">
<result type="stream">
<param name="contentDisposition">attachment;filename=${fileName}</param>
</result>
</action>
</package>
</struts>

Struts2 文件上传和下载的更多相关文章

  1. Struts2文件上传和下载(原理)

    转自:http://zhou568xiao.iteye.com/blog/220732 1.    文件上传的原理:表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值:1)     ...

  2. 十六、Struts2文件上传与下载

    文件上传与下载 1.文件上传前提:<form action="${pageContext.request.contextPath}/*" method="post& ...

  3. 【SSH2(实用文章)】--Struts2文件上传和下载的例子

    回想一下,再上一篇文章Struts2实现机制,该步骤做一步一步来解决,这种决心不仅要理清再次Struts2用法.映射机制及其在深入分析.最后一个例子来介绍Struts2一种用法,这里将做一个有关文件上 ...

  4. 学习Struts--Chap07:Struts2文件上传和下载

    1.struts2文件上传 1.1.struts2文件上传的基本概述 在开发web应用的时候,我们一般会为用户提供文件上传的功能,比如用户上传一张图像作为头像等.为了能上传文件,我们必须将表单的met ...

  5. struts2 文件上传和下载,以及部分源代码解析

    struts2 文件上传 和部分源代码解析,以及一般上传原理 (1) 单文件上传 一.简单介绍 Struts2并未提供自己的请求解析器,也就是就Struts2不会自己去处理multipart/form ...

  6. (八)Struts2 文件上传和下载

    所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:Struts2 文件上传 Struts2 文件上传基于Struts2 拦 ...

  7. struts2学习(13)struts2文件上传和下载(1)

    一.Struts2文件上传: 二.配置文件的大小以及允许上传的文件类型: 三.大文件上传: 如果不配置上传文件的大小,struts2默认允许上传文件最大为2M: 2097152Byte:   例子实现 ...

  8. Struts2文件上传与下载

    一,页面 index.html 在页面中最重要的就是这个文件上传用的 form 表单,注意这里一定要把 form 的encyType属性明确标定为“multipart/form-data”,只有这样. ...

  9. struts2文件上传和下载

    1. struts系统中的拦截器介绍 过滤器:javaweb中的服务器组件,主要针对的请求和响应进行拦截. 拦截器:主要针对方法的调用,进行拦截器,当使用代理对象调用某个方法时候 对方法的调用进行拦截 ...

  10. 笔记:Struts2 文件上传和下载

    为了上传文件必须将表单的method设置为POST,将 enctype 设置为 muiltipart/form-data,只有设置为这种情况下,浏览器才会把用户选择文件的二进制数据发送给服务器. 上传 ...

随机推荐

  1. selenium-元素的定位

    前戏 元素的定位是自动化测试的核心,要想操作一个元素,首先应该识别这个元素.Webdriver 提供了一系列的元素定位方法,常用的有 id,name,class name,link text,part ...

  2. bzoj5183 [Baltic2016]Park

    题目描述: bz luogu 题解: 把坐标系看反了持续$WA$系列. 对偶图+并查集维护. 先处理出树对树.树对墙的空隙,然后把人和空隙按从小到大排序. 用并查集维护四面墙之间是否能互相隔断. 代码 ...

  3. 【树形背包】bzoj4033: [HAOI2015]树上染色

    仔细思考后会发现和51nod1677 treecnt有异曲同工之妙 Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 ...

  4. GIMP语言设置

    初学GIMP,需要设置语言:点击 编辑 - 首选项 其他的配置如: 配置快捷键 自己熟悉吧!

  5. Re:从零开始的Linux之路(杂谈)

    决定认真从零开始写一个Linux的学习过程,像我这么偷懒的人能写文字记录已经很不容易了,希望不要半途而废吧(拖走) 用多了Linux其实发现,要是哪天Linux和Windows能结合下就好了,简单粗暴 ...

  6. CSS3-文本-word-wrap,word-break,white-space

    一.word-wrap使用: 语法: word-wrap : normal | break-word 取值说明: 1.normal为默认值,当其值为normal控制连续文本换行(允许内容顶开容器的边界 ...

  7. 王小胖之 Base64编码/解码

    使用场景:编码网址作为URL参数,简单编码或加密数据,下载地址生成或解析. 实现功能:BASE64在线编码和解码. 数据实例:王小胖好啊,王小胖顶呱呱!! ~~ english 123 !@#$%^& ...

  8. LeetCode(91) Decode Ways

    题目 A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A ...

  9. LeetCode答案(python)

    1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这 ...

  10. 【js】--常用DOM库工具

    /* 2014年3月16号 常用DOM工具库*/var DOM={}; DOM.getElesByClass=function (strClassName,context){ if(typeof st ...