Struts2.1笔记(九):上传和下载文件

Java Web应用中Apache、Struts1和Struts2的文件上传下载技术解析 本文还有配套的精品资源,点击获取 简介:在Java Web开发中,文件上传下载功能不可或缺,尤其是对于处理大量数据和多媒体资源。Apache的Commons FileUpload、Struts1和Struts2作为流行的Java Web框架,提供了各自的文件处理方法。本文将深入探讨使用这三种技术实现文件上传和下载的过程,包括关键代码示例和解决方案。同时,还将涵盖在实际应用中... 阅读详情

8.1 上传文件完成前的两个必要操作
1.表单的enctype属性设置为multipart/form-data
2.method="post"
8.2上传框架
常用的上传框架有:Common-FileUpload和COS
8.2.1下载Common-FileUpload框架
Common-FileUpload
Common-IO
8.3 Struts2的文件上传
步骤:
a.编写文件的上传页面
b.实现文件上传的Action
c.配置文件上传的Action
8.3.1 拦截器实现文件过滤
配置fileUpload拦截器 两个重要参数
allowedTypes:允许上传的文件类型。
maximumSize:允许上传文件的大小。
8.4使用Struts2控制文件下载
步骤:
a.编写下载页面
b.实现文件下载的Action
c.配置文件下载的Action
配置时的3个重要属性
contentType:下载文件的文件类型
inputName:下载文件的入口输入流
contentDisposition:下载的文件名

下面是一个文件上传和下载的实例代码

1.可以自定义实现上传数量的实例
upload.JSP代码

<%@ page language="java" contentType="text/html; charset=gb2312"
 pageEncoding="gb2312"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Insert title here</title>
<script type="text/javascript">
function addMore(){
 var td = document.getElementById("td");
 
 var br =document.createElement("br");
 var input=document.createElement("input");
 var button=document.createElement("input");
 
 input.type="file";
 input.name="file";
 
 button.type="button";
 button.value="ReMove";
 
 button.onclick = function(){
 td.removeChild(br);
 td.removeChild(input);
 td.removeChild(button);
 }
 
 td.appendChild(br);
 td.appendChild(input);
 td.appendChild(button);
}

</script>
</head>
<body>
<s:form action="upload" enctype="multipart/form-data" theme="simple">

 <table align="center" width="50%" border="1">
  <tr>
   <td>Title</td>
   <td><s:textfield name="title" label="title" id="titleId"></s:textfield>
   </td>
  </tr>


  <tr>
   <td>upload</td>

   <td id="td"><s:file name="file" label="file"></s:file><input type="button" value="AddMore..." onclick="addMore()"></td>
  </tr>

  <tr>
   <td><s:submit value=" submit "></s:submit></td>

   <td><s:reset value=" reset "></s:reset></td>
  </tr>
 </table>
</s:form>
</body>
</html>

UploadAction代码

package com.test.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport {
 private List<String> title;
 private List<File> file;
 private List<String> fileFileName;
 private List<String> fileContentType;

 public String execute() throws Exception {
  for (int i = 0; i < file.size(); i++) {
   InputStream is = new FileInputStream(file.get(i));

   File f = new File("D:", this.getFileFileName().get(i));
   OutputStream os = new FileOutputStream(f);
   byte[] buffer = new byte[400];
   int length = 0;
   while ((length = is.read(buffer)) > 0) {
    os.write(buffer, 0, length);
   }
   is.close();
   os.close();

  }
  return SUCCESS;
 }

 public List<String> getTitle() {
  return title;
 }

 public void setTitle(List<String> title) {
  this.title = title;
 }

 public List<File> getFile() {
  return file;
 }

 public void setFile(List<File> file) {
  this.file = file;
 }

 public List<String> getFileFileName() {
  return fileFileName;
 }

 public void setFileFileName(List<String> fileFileName) {
  this.fileFileName = fileFileName;
 }

 public List<String> getFileContentType() {
  return fileContentType;
 }

 public void setFileContentType(List<String> fileContentType) {
  this.fileContentType = fileContentType;
 }
}


struts.xml

<?xml version="1.0" encoding="GBK"?>
<!-- 指定Struts 2配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
 "http://struts.apache.org/dtds/struts-2.1.dtd">
<!-- struts是Struts 2配置文件的根元素 -->
<struts>
 <constant name="struts.custom.i18n.resources" value="message"></constant>
 <constant name="struts.i18n.encoding" value="gbk"></constant>
 <constant name="struts.multipart.saveDir" value="D:/"></constant>
 <package name="Struts2" extends="struts-default">
<action name="upload" class="com.test.action.UploadAction">
   <result name="success">/Result2.jsp</result>
   <result name="input">/upload2.jsp</result>
   <interceptor-ref name="fileUpload">
    <param name="allowedTypesSet">
     application/vnd.ms-word
    </param>
   </interceptor-ref>
   <interceptor-ref name="defaultStack"></interceptor-ref>
  </action>
  </package>
</struts>

---------------------------------------------------------------

2.限制只能下载ppt格式的文件

download.JSP代码

<%@ page language="java" contentType="text/html; charset=gb2312"
    pageEncoding="gb2312"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Insert title here</title>
</head>
<body>
<s:a href="/Struts2/download.action">down</s:a>
</body>
</html>

DownLoadAction.java代码


package com.test.action;

import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class DownLoadAction extends ActionSupport {

 public InputStream getDownFile() {
  return ServletActionContext.getServletContext().getResourceAsStream(
    "/upload/Struts2.ppt");

 }

 @Override
 public String execute() throws Exception {

  return SUCCESS;
 }

}


struts.xml配置

<?xml version="1.0" encoding="GBK"?>
<!-- 指定Struts 2配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
 "http://struts.apache.org/dtds/struts-2.1.dtd">
<!-- struts是Struts 2配置文件的根元素 -->
<struts>
 <constant name="struts.custom.i18n.resources" value="message"></constant>
 <constant name="struts.i18n.encoding" value="gbk"></constant>
 <constant name="struts.multipart.saveDir" value="D:/"></constant>
 <package name="Struts2" extends="struts-default">
<action name="download"
   class="com.test.action.DownLoadAction">
   <result name="success" type="stream">
    <param name="contentType">
     application/vnd.ms-powerpoint
    </param>
    <param name="contentDispostion">
     filename="Struts2.ppt"
    </param>
    <param name="inputName">downFile</param>
   </result>
  </action>
 </package>
</struts>

 

Struts2框架下的文件上传与下载实现指南 Struts2是Apache组织下的一个开源的Web应用框架,其基于MVC设计模式,为Java Web应用提供了一个强大的开发基础。其特点在于将业务逻辑与展示层进行有效分离,极大地方便了开发人员对应用程序的维护和扩展。由于其良好的模块化和可配置性,Struts2在企业级应用中尤为流行,尤其适合于那些需要快速开发而又具有复杂业务逻辑的应用系统。Struts2框架主要分为几个核心组件:Model组件:用于处理业务逻辑和数据持久化。 阅读详情

相关推荐

Struts2框架下的文件上传和下载实现指南

Struts2框架是由OpenSymphony项目组开发的一个开源MVC框架,它是基于WebWork框架的优秀特性并结合了Struts1的优点而发展起来的。Struts2的核心价值在于分离表示层和业务逻辑层,提供了一个更加灵活和强大的方式来构建Web应用程序。在Struts2框架中,处理文件上传请求的后台类通常被定义为Action类。Action类在Struts2中扮演着控制器的角色,是MVC模式中C的关键部分。创建一个Action类需要继承自类或者实现Action接口。

weixin_42323064的博客 688

Struts2实现文件上传和下载

在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来比较繁琐,而且不灵活,在学习了struts2后,struts2为文件上传下载提供了更好的实现机制,在这里我分别就单文件上传和多文件上传的源代码进行一下讲解,这里需要导入文件下载上传的两个jar文件,一...

筱进GG 4058

对STIX2.0标准2个关系对象(SRO)的解读——对STIX2.0官方文档的翻译

STIX是一种描述网络威胁信息的结构化语言,STIX 能够以标准化和结构化的方式获取更广泛的网络威胁信息。对官方文档进行解读相对于其他学习方式更加有效,且更准确。 由于文档都是英文,为了自己更好的学习,自己将其翻译成文档的形式,希望大家能够借鉴,有不好的地方希望指出来,互相学习!

Apache、struts1、struts2文件上传下载的3种方式

/*jsp的上传(导入第三方upload.jar)*/ //用Apache的SmartUpload方式上传,共5部 //1.引入SmartUpload SmartUpload su = new SmartUpload(); //2.设定允许上传的文件类型,格式之间用逗号隔开 su.setAllowedFilesList("jpg,jpeg,gif"); //3.设定允许上传的文件的大小 su.s

chance_yin 1904

从Oracle到腾讯TDSQL数据库升级技术分享

腾讯TDSQL(Tencent Distributed SQL)是一款兼具关系数据库和NoSQL数据库优点的新型数据库,文章主要分享oracle升级为TDSQl数据库技术经验。

u012372850的专栏 2616

NU1680无线充电接收器在TWS耳机中的应用实战:I2C调压与QI协议适配

本文详细解析了NU1680无线充电接收器在TWS耳机充电仓设计中的应用实战。重点阐述了其无固件设计、I2C接口动态调压功能如何解决不同QI协议发射器的兼容性难题,并分享了硬件设计、PCB布局、与发射端联调及安全测试等关键环节的实践经验,助力开发者快速实现稳定高效的无线充电方案。

weixin_28432777的博客 233

Struts2文件上传下载

Struts2文件上传下载(一) 要想将文件从客户端上传到服务器,首先要将form的enctype属性设置为” multipart/form-data”,method属性设置为post。然后在服务端获取上传的二进制流,解析出二进制流中所包含的全部表单域。表单域中包含的信息可能是文本信息,也可能是二进制的字节码,文本和字节码混合在一起。要想将一个文件中包含的二进制信息从一个二进制流中“

congcongsuiyue的专栏 1304

Gerrit 使用操作手册

Gerrit是一种免费、开源的代码审查工具,使用网页交互页面。这个软件的名称来自于荷兰设计师师赫里特·里特费尔德(GerritRietveld),作者为Google公司的ShawnPearce。它使用Git作为底层版本控制系统,相比于其他的代码管理工具,Gerrit明显的特色是代码审核。利用网页浏览器,同一个团队的软件程序员,可以相互审核(Review)彼此修改后的程序代码,然后决定是继续提交还是取消提交。...

九离的博客 1万+

Struts2文件的上传和下载

Struts2文件的上传和下载                                                               ++YONG原创,转载请注明1.    文件上传的原理:表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值:1)      application/x-www-form-urlencoded:这是默认编码方式

Java之道 7513

告别SendKeys!用DD驱动级模拟在Windows 10/11上实现真·后台键鼠操作(Python实战)

本文详细介绍了如何使用DD驱动级模拟技术在Windows 10/11上实现真后台键鼠操作,解决传统方法如pyautogui和SendKeys的局限性。通过Python实战案例,展示了驱动级模拟在游戏自动化、RPA等场景中的高效应用,包括环境配置、核心API解析及高级优化技巧。

weixin_42519985的博客 805

ollama服务暴露公网?三步搞定Nginx反向代理配置(避坑指南)

本文详细介绍了如何通过Nginx反向代理安全地将Ollama服务暴露到公网,避免直接修改OLLAMA_HOST带来的安全隐患。文章提供了从SSL证书部署到高级安全加固的全流程实战指南,包括IP白名单、基础认证、速率限制等企业级安全措施,帮助用户实现安全可靠的外部访问。

wood5的博客 178

struts2实现文件的上传与下载

单个文件的上传 多个文件的上传 文件上传的过滤 文件的下载 ajax文件上传 1.单个文件的上传 1)struts2默认是采用apache的上传组件 commons-fileupload进行上传。 引入相关jar包: commons-fileupload-1.3.1.jar commons-io-2.2.jar 2)修改前台页面form表单的enctype属性的值为 multip

. 2204

labview设置工业摄像头外部触发

使用labview对海康MV-CA013-GM相机设置外部触发。 一、硬件部分 1、硬件引脚定义 2、触发模式设置 相机的触发模式分为两种,一种是内触发模式、另外一种是外触发模式。 3、接线图 信号线的地要跟给信号的设备共地。信号线给高电平时触发拍照。 二、软件部分 1、创建vision acquisition 2、选择使用的摄像头。 3、选择模式。 4、在Acquisition Control中设置这些选项。 5、设置保存图片路径 设置保存路径和保存图片的格式。点击完成即可 参考:https:/

qq_43493715的博客 5668

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

struts2 文件上传 和部分源码解析,以及一般上传原理 (1) 单文件上传 一.简介 Struts2并未提供自己的请求解析器,也就是就Struts2不会自己去处理multipart/form-data的请求,它需要调用其他请求解析器,将HTTP请求中的表单域解析出来。但Struts2在原有的上传解析器基础 上做了进一步封装,更进一步简化了文件上传。 Struts2默认

u013890660的专栏 1337

SPECweb2009调优指南

 SPECweb2009 是衡量 Web 服务器性能和能效的标准化基准,可以对 Web 服务器的并发数进行性能测试,评测 Web 服务器能够支持的最大同时连接数的客户端/服务器(每秒能够响应的最大请求数)。为充分利用服务器性能,提升SPECweb2009测试结果,可通过增大系统进程数、优化服务器软件参数、绑核以及优化参数等。

developersupport的博客 2608

工商银行软件开发中心数据安全监测溯源防护体系建设成果及展望

结合业界先进溯源理念和我行管理要求,依托大数据、分布式搜索分析引擎等技术,构建PB级海量数据加工分析和小时级快速核验、检索、溯源手段(如图6所示),支撑6种客户敏感信息关键要素的单一或组合溯源,形成行之有效的数据安全溯源流程,配套落地自动化快速泄露样本真实性核验和灵活高效的溯源能力,通过数据相关属性的自动化分析,实现追踪泄露源头、明确泄露路径的目标,为有效应对数据安全事件,降低和消除风险与不良影响,开展事后追责处置工作提供体系化解决方案。提高数据排查的自动化程度和排查效率,降低人工成本。

银行信息系统应用架构详解 226

struts2 框架下的文件上传和文件下载

struts2 框架下的文件上传和文件下载 在日常的web应用中文件上传和文件下载都是非常普遍的事情,而解决这个问题的方式也是有着很多种。今天我主要是简单介绍一下采用struts2 框架下我们应该怎么实现这两个功能呢。 1. 文件上传 为了在javaEE 应用中实现文件上传功能,需要将表单的method 属性设置为POST 方式,将enctype 属性设置为“multipart/form-data...

qq_41910568的博客 788

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SSH笔记-Struts2的文件上传下载

1、项目中文件上传相关文件: - FileUploadAction.java - FileUpload.jsp - i18n.properties/i18n_en_US.properties/i18n_zh_CN.properties - commons-fileupload.x.x.jar - commons-io-x.x.x.jar 2、项目中文件下载相关文件: - ...

oyy的博客 1060

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

struts2的上传和下载

1.上传 上传文件对表单的要求: 表单要使用post提交 表单的enctype是multipart/form-data 表单中要有file类型的input文本域 Struts2上传是基于拦截器,底层还是使用commons-fileupload组件 struts上传的步骤: (1)建立表单 <%@ page contentType="text/html;charset=UTF...

小匠心的博客 236

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

struts实现文件上传下载

1.jsp中表单实现上传   选择文件一: 2.过滤器截取,到达配置文件,调用UploadAction pic /success.jsp pic /success.jsp upload application/oct

lixiao1048的博客 2485

struts2文件上传和下载

Struts2文件上传和下载 1. 文件上传 1.1单文件上传 Action类 public class FileUploadAction extends ActionSupport {     //具体上传文件的 引用 , 指向临时目录中的临时文件     private File upload;     //上传文件的类型, ContentType 固定的写法     

baidu_36074048的博客 594

Struts2第六篇【文件上传和下载】

前言在讲解开山篇的时候就已经说了,Struts2框架封装了文件上传的功能……..本博文主要讲解怎么使用Stuts框架来完成文件上传和下载回顾以前的文件上传首先,我们先来回顾一下以前,我们在web中上传文件是怎么做的….http://blog.csdn.net/hon_3y/article/details/66975268可以使用FileUpload或者SmartUpload组件来完成文件上传的功能。

zhong_fucheng 1006

使用Struts2实现文件的上传和下载

在当今的互联网上,文件的上传和下载已经非常普遍的,今天我就学习了如何使用Struts2实现文件的上传和下载。 首先我们来做一些准备工作,我用到了下面这几个包 然后配置好核心控制器 web.xml主要代码 filter> filter-name>struts2filter-name> filter-class>org.apache.struts2.disp

luqiren的博客 1075

Struts:文件上传和下载

1,文件上传 1.1,Struts2文件上传配置 Struts2并未提供自己的请求解析器,Struts2不会自己去处理multipart/form-data的请求,它需要调用其他上传框架来解析二进制请求数据,但Struts2在原有的上传解析器基础上做了进一步封装。在Struts2的struts.properties配置文件中可以指定Struts2上传文件时的上传解析器。 #指定使用COS的文件上传解析器,COS:O‘Reilly公司开发的开源框架,会不定期的增加一些新功能。 struts.mult

燕双嘤 745

Struts2实现文件上传下载

文件的上传 概述: 第一步,需要输入流 读入虚拟机程序中 第二步从虚拟机程序输出流放到需要的路径 思路: 1.客户端 浏览器如何处理---表单 2.action 中如何处理上传的文件 3.如何将文件保存到服务器的某个位置。 uil:统一资源描述符 项目名+actionname名 method 提交方式 get不安全 post 协议体 ...

qq_44025656的博客 1021

struts2文件上传及下载

文件上传 单文件上传 struts2的文件上传功能通过commons-fileupload来实现 jsp表单需要为post提交,并且enctype="multipart/form-data" &lt;html&gt; &lt;head&gt; &lt;meta http-equiv="Content-Type" content="text/html; charset...

char0321 2942
上一篇: Struts2.1笔记(八):Struts2的拦截器
下一篇: 可以让你少奋斗十年的工作经验
不善^
博客等级 码龄18年 635粉丝 235原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值