首先我们写一个单文件长传的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. Mac 电源管理

    在安装BatteryManager后,可以删除NullPowerMananger,AppleIntelPowerMananger, AppleIntelPowerClientMananger三个kex ...

  2. Python自动化测试框架——数据驱动(从代码中读取)

    今天小编要介绍的是数据驱动最简单和最常用的一种方法,由于只是介绍方法,代码操作后的美观程度略有缺陷,介意者可以自行改动 还是以163邮箱登录为例: 设计一个存放数据的类,这个类的参数是我们需要修改的数 ...

  3. verilog behavioral modeling--sequential and parallel statements

    1.Sequential statement groups the begin-end keywords: .group several statements togethor .cause the ...

  4. Makefile文件中的sed介绍

    haoxin$ sed --helpUsage: sed [OPTION]... {script-only-if-no-other-script} [input-file]... -n, --quie ...

  5. Spring,Mybatis,Springmvc框架整合项目(第一部分)

    一.说在前面的话 本篇博文实现一个注册登录小项目,使用spring,mybatis,springmvc框架进行整合,我们创建的是一个maven工程,主要是方便jar包版本的管理.项目使用eclispe ...

  6. BZOJ 2295: [POJ Challenge]我爱你啊

    由于是子序列,那么难度就在于读入 #include<cstdio> #include<algorithm> #include<cstring> using name ...

  7. wei UI使用

    1.前言 通过前面系列文章的学习与讲解,相信大家已经对微信的开发有了一个全新的认识.后端基本能够基于盛派的第三方sdk搞定大部分事宜,剩下的就是前端了.关于手机端的浏览器的兼容性问题相信一直是开发者们 ...

  8. Java-从一个字符串获取子字符串

    substring函数 package com.tj; public class MyClass implements Cloneable { public static void main(Stri ...

  9. Linux 文件/文件夹重命名

    mv命令既可以重命名,又可以移动文件或文件夹. 例子:将目录A重命名为Bmv A B 例子:将/a目录移动到/b下,并重命名为cmv /a /b/c 其实在文本模式中要重命名文件或目录,只需要使用mv ...

  10. NYOJ 104 最大和

    最大和 时间限制:1000 ms  |  内存限制:65535 KB 难度:5   描述 给定一个由整数组成二维矩阵(r*c),现在需要找出它的一个子矩阵,使得这个子矩阵内的所有元素之和最大,并把这个 ...