## struts2完美实现文件上传和下载 ##

第一步:在webx项目lib目录下加入struts.jar包
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.3.1.jar
commons-io-2.2.jar
commons-lang3-3.2.jar
freemarker-2.3.22.jar
javassist-3.11.0.GA.jar
log4j-api-2.2.jar
log4j-core-2.2.jar
ognl-3.0.6.jar
struts2-core-2.3.24.1.jar
struts2-dojo-plugin-2.3.24.1.jar
xwork-core-2.3.24.1.jar

第二步配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><display-name>Struts08</display-name><!-- struts2.配置--><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>*.action</url-pattern><url-pattern>*.jsp</url-pattern></filter-mapping><!-- struts2配置--><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>`

第三步配置struts.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd">
<struts><!-- 设置字符编码 --><constant name="struts.i18n.encoding" value="utf-8" /><!-- 设置自动装载国际化 --><constant name="struts.i18n.reload" value="true" /><!-- 设置动态方法调用 --><constant name="struts.enable.DnamicMethodInvocation" value="true" /><!-- 设置开发模式 --><constant name="struts.devMode" value="true" /><!-- 指定每次配置文件更改后,自动重新加载 --><constant name="struts.configuration.xml.reload" value="true" /><!-- 设置访问方式 --><constant name="struts.action.extension" value="action,," /><!-- 去除多余的格式 --><constant name="struts.ui.theme" value="simple" /><!--设置上传文件大小20MB,默认为2MB大小 --><constant name="struts.multipart.maxSize" value="20971520"></constant><package name="default" extends="struts-default" namespace="/"><!-- 文件上传配置 --><action name="m" class="com.action.UploadManyFile"><!-- 文件上传到user目录下--><param name="path">/user</param><param name="size">10240000</param></action><!-- 文件下载配置 --><action name="down" class="com.action.FileDownloadAction"><param name="path">/user</param><result name="success" type="stream"><param name="contentType">application/octet-stream</param><param name="inputName">inputStream</param> <param name="inputName">inputStream</param><param name="contentDisposition">filename=${fn}</param><param name="bufferSize">4096</param></result></action></package></struts>

第四步jsp写入代码

<%@ page language="java" pageEncoding="UTF8"%>
<!Doctype html>
<html >
<head><meta charset="UTF-8" /><title>struts2 多文件上传</title>
</head>
<body><h1>struts-多文件 上传</h1><form action="m.action" method="post" enctype="multipart/form-data">姓名:<input type="text" name="name" value="张三"><br>文件:<input type="file" name="fs"  multiple ><br>文件1:<input type="file" name="fs"  multiple ><br>文件2:<input type="file" name="fs"  multiple ><br>文件3:<input type="file" name="fs"  multiple ><br><input type="submit"   value="上传"><br></form><hr><h1>文件下载</h1><a href="user/abc.jpg">下载</a><a href="user/abc.rar">下载zip</a><a href="down.action?fn=abc.rar">struts2文件下载</a>
</body>
</html>

第四步在src目录下建立com.action包建立UploadManyFile

package com.action;import java.io.File;import javax.servlet.ServletContext;import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.util.ServletContextAware;import com.opensymphony.xwork2.ActionSupport;public class UploadManyFile  extends ActionSupport implements ServletContextAware{private String name;// private File[] fs; //文件名private String [] fsFileName;private String[] fsContentType;//文件类型private String path;//文件路径private  int   size; //文件大小private ServletContext  ctx;public String getName() {return name;}public void setName(String name) {this.name = name;}public File[] getFs() {return fs;}public void setFs(File[] fs) {this.fs = fs;}public String getPath() {return path;}public void setPath(String path) {this.path = path;}public int getSize() {return size;}public void setSize(int size) {this.size = size;}public String[] getFsFileName() {return fsFileName;}public void setFsFileName(String[] fsFileName) {this.fsFileName = fsFileName;}public String[] getFsContentType() {return fsContentType;}public void setFsContentType(String[] fsContentType) {this.fsContentType = fsContentType;}@Overridepublic void setServletContext(ServletContext  ctx) {this.ctx=ctx;    }@Overridepublic String execute() throws Exception {String p=ctx.getRealPath(path);File f=new File(p);if(!f.exists()){f.mkdirs();}for(int i=0;i<fs.length;i++){System.out.println(path);System.out.println(p);System.out.println(size);System.out.println(fs[i].length());System.out.println("------------");/* * 如果文件大于上传限定值*/if(fs[i].length()<size){FileUtils.copyFile(fs[i],new File(f,fsFileName[i]));}}return null;}}

第五步建立FileDownloadAction

package com.action;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.Action;public class FileDownloadAction implements Action {private String fn;  //文件名private String path;  //路径public String getFn() {return fn;}public void setFn(String fn) {this.fn = fn;}public String getPath() {return path;}public void setPath(String path) {this.path = path;}@Overridepublic String execute() throws Exception {return SUCCESS;}public InputStream getInputStream() throws Exception{//获得路径和文件名String ip=ServletActionContext.getServletContext().getRealPath(path)+"/"+fn;InputStream is=new FileInputStream(ip);return is;}
}

第六步输入项目名称运行

struts2完美实现文件上传和下载相关推荐

  1. Struts2之实现文件上传与下载

    当我们用struts2进行文件上传时,首先要将from表单的enctype属性进行重新设置.那么该属性的取值就是决定表单数据的编码方式.一般有三个属性取值: application/x-www-for ...

  2. ①Struts2之实现文件上传与下载

    在电脑前坐了一天,看看这个看看那个,也没什么意思,就翻一翻以前培训时的课件,整理整理全当做复习了. 当我们用struts2进行文件上传时,首先要将from表单的enctype属性进行重新设置.那么该属 ...

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

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

  4. Struts2.3.5+Hibernate3+Spring3.1基于注解实现的多文件上传,下载

    Struts2.3.5+Hibernate3+Spring3.1基于注解实现的的多文件上传,下载,这里是上传文件到数据库中,上传控件可以增加和删除,有需要的朋友可以看看. 以下是源码下载地址:http ...

  5. Struts2文件上传与下载

    2019独角兽企业重金招聘Python工程师标准>>> 本文主要写的是struts2 的文件上传与下载(中文文件名问题的解决).  使用的时候直接在地址栏中输入:http://loc ...

  6. 走进Struts2(六)— 文件上传和下载

    一.文件上传 实现文件上传的方式有很多种,比如Apache的Common-FileUpload,但是实现起来非常的繁琐,而Struts2来实现文件上传则简单的多,默认也是基于Common-FileUp ...

  7. Struts2实现文件上传与下载

    Struts包+源码下载地址:点击打开链接   ,打不开,复制后面 http://struts.apache.org/download.cgi#struts223  ,历史版本:http://arch ...

  8. WSE3.0构建Web服务安全(4):MTOM消息传输优化和文件上传、下载

    MTOM消息优化传输机制主要应用于大量数据的传输,很多文章中也直接得出结论:使用MTOM文件传输效率高.为什么MTOM的数据传输效率会比别的方式要高?MTOM真的如此完美吗,它有什么不足?什么情况下使 ...

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

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

最新文章

  1. 《深入理解 Spring Cloud 与微服务构建》第五章 Kubernetes
  2. 使用angular4和asp.net core 2 web api做个练习项目(四)
  3. python是什么意思怎么读-python怎么读(python怎么读中文)
  4. 列出访问ftp 文件传输服务器过程,FTP文件传输协议简介及命令描述
  5. 叮咚志汇超级外卖餐饮 6.3.8 + 超级跑腿 v2.0.3 打包下载 小程序模块
  6. 将UCF101数据集的视频提取为帧(多线程实现)
  7. 数字孪生实际应用:智慧城市项目建设解决方案
  8. xp系统怎样安装传真服务器,Windowsxp系统下设置传真接收的详细步骤
  9. matlab数据归一化函数mapminmax
  10. java接口分几种类型_细数Java接口的概念、分类及与抽象类的区别
  11. 台式计算机自动关机,电脑会自动关机是什么原因,台式电脑自动关机是什么原因...
  12. TalkingData
  13. 什么是全栈工程师?前端后端是做什么的?
  14. python计算方差膨胀因子_可决系数R^2和方差膨胀因子VIF
  15. 计算机毕业设计SSM餐厅管理系统【附源码数据库】
  16. uni-app:基于Vue的跨端框架(闪电演讲内容整理) | 掘金开发者大会
  17. 南通java行业,南通java技术培训中心
  18. POJ 1659 Frogs‘ Neighborhood (Havel 定理)
  19. cad套索选择lisp_怎么将CAD2015,CAD2016的窗交窗口选择框的套索改为矩形吗
  20. 汉寿计算机职业中专,汉寿县职业中等专业学校2021年招生简章

热门文章

  1. 使用putty的pscp与服务器上传下载文件
  2. 企业需要什么样的ERP运维服务
  3. HTML学生个人网站作业设计:动漫网站设计——名侦探柯南(6页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
  4. 计算机数据库培训简称,解读美国劳工部“计算机化职业信息数据库”(简称O*NET)??结构介绍...
  5. 封装BigDecimal的加减乘除方法,保留自定义位小数的工具。
  6. 程序设计教程用c 语言编程,程序设计教程:用C/C++语言编程
  7. 追溯互联网“原罪”之起源:数据跟踪用户是究竟是何时形成的?
  8. IEEE Signal Processing Letters (SPL) 投稿须知
  9. vue solt(插槽)用法小结
  10. ESD静电防范常见问题及解决方案