`
jbeduhai
  • 浏览: 504467 次
  • 性别: Icon_minigender_1
  • 来自: 山东
社区版块
存档分类
最新评论

struts2-上传文件(1)

阅读更多

上传文件是很多Web程序都具有的功能。Struts2本身没有提供解析上传文件内容的功能,它使用第三方的文件上传组件提供对文件上传的支持。所以我们要想利用Struts2实现文件上传的功能,首先要将commons-fileupload-1.2.1.jarcommons-io-1.4.jar复制到项目的WEB-INF/lib目录下。

我们知道,Struts1.x的上传组件需要一个ActionForm来辅助传递文件,而Struts2的上传组件却很简单,只用一个拦截器:org.apache.struts2.interceptor.FileUploadInterceptor(这个拦截器不用配置,是自动装载的),它负责调用底层的文件上传组件解析文件内容,并为Action准备与上传文件相关的属性值。这里要强调的是:处理文件上传请求的Action必须提供特殊样式命名的属性。例如,假设表单中文件选择框的名字为upload,那么Action应该提供以下三个属性upload,uploadFileName,uploadContentType来分别表示上传文件的File对象、上传文件名以及上传文件内容类型。很多人因为忽略了这一点而犯错误。

下面是上传单个文件的JSP页面代码singleUpload.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

   pageEncoding="UTF-8"%>

<%@ 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=UTF-8">

<title>上传单个文件</title>

</head>

<body>

<s:actionerror />

<s:form action="upload" method="post" enctype="multipart/form-data">

   <s:file name="upload" label="文件名" />

   <s:textfield name="description" label="文件描述" />

   <s:submit value="上传" />

</s:form>

</body>

</html>

 

注意粗体部分的设置,这是有上传控件的表单所要求的格式。下面是用于上传的动作类的完整代码:

package org.leno.struts2.action;

 

import java.io.*;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

 

public class UploadAction extends ActionSupport {

 

   private static final long serialVersionUID = 1L;

   // 代表上传文件的File对象

   private File upload;

   // 上传文件名

   private String uploadFileName;

   // 上传文件的MIME类型

   private String uploadContentType;

   // 上传文件的描述信息

   private String description;

   // 保存上传文件的目录,相对于WEB应用程序的根路径,在struts.xml中配置

   private String uploadDir;

 

   public File getUpload() {

      return upload;

   }

 

   public void setUpload(File upload) {

      this.upload = upload;

   }

 

   public String getUploadFileName() {

      return uploadFileName;

   }

 

   public void setUploadFileName(String uploadFileName) {

      this.uploadFileName = uploadFileName;

   }

 

   public String getUploadContentType() {

      return uploadContentType;

   }

 

   public void setUploadContentType(String uploadContentType) {

      this.uploadContentType = uploadContentType;

   }

 

   public String getDescription() {

      return description;

   }

 

   public void setDescription(String description) {

      this.description = description;

   }

 

   public String getUploadDir() {

      return uploadDir;

   }

 

   publicfont-size: 11pt; color: black; font-family

分享到:
评论

相关推荐

    Struts2-2.3.16 全jar包

    commons-fileupload-1.2.1.jar//文件上传时用的,为了以后用到,最好加入 commons-io-1.3.2.jar//同上 commons-logging-1.0.4.jar freemarker-2.3.16.jar javassist-3.7.ga.jar ognl-3.0.jar struts2-core-2.2.1.1....

    struts-2.5.22-all.zip

    除此之外,Struts2还依赖于其他一些库,如OGNL(Object-Graph Navigation Language)用于表达式语言,Freemarker或Velocity用于视图模板,以及各种插件来支持特定的功能,如文件上传、JSON处理等。 在标签中提到了...

    struts2-core-2.3.31.jar

     Apache Struts是美国阿帕奇(Apache)软件基金会负责维护的一个开源项目,是一套用于创建企业级Java Web应用的开源MVC框架,主要提供两个版本框架产品:Struts 1和Struts 2。  Apache Struts 2.3.5 - 2.3.31版本...

    struts2-blank-2.0.14的lib中的jar包

    1. **Struts2核心组件** - `struts2-core.jar`: 这是Struts2的核心库,包含了Action、Result、Interceptor等核心类,以及配置解析器和ActionContext等。它是处理HTTP请求、执行业务逻辑和渲染视图的核心。 2. **...

    struts2漏洞s2-045,不升级jar版本的修补方法,已验证.docx

    该漏洞是由于 Struts2 中的 MultiPartRequestWrapper 类中的一个错误导致的,该错误可能会导致攻击者可以上传恶意文件,进而导致服务器崩溃或数据泄露。 修补方法 为了修复 S2-045 漏洞,我们可以采取以下步骤: 1...

    struts2-core-2.1.8.1.jar

    在压缩包子文件的文件名称列表"struts_jar"中,很可能包含的是与Struts2相关的所有依赖库,便于构建一个完整的Struts2应用环境。使用这样的集合可以快速搭建Struts2项目,并确保所有必要的库都已就绪。 总结来说,...

    struts框架-文件上传下载

    1. 使用Struts2的拦截器来处理文件上传,可以更好地控制和管理文件上传过程。 2. 为文件上传和下载操作编写单元测试,确保其稳定性和正确性。 3. 保持代码的可读性和可维护性,遵循良好的编程规范。 以上是对...

    struts2-core-2.5.10.1

    修复S2-045:Struts 2远程执行代码漏洞,时用到的jar,漏洞影响:基于Jakarta Multipart解析器执行文件上传时可能的RCE 影响版本:Struts 2.3.5 - Struts 2.3.31  Struts 2.5 - Struts 2.5.10

    struts2-多文件上传2

    "struts2-多文件上传2"这个项目显然是关于如何在Struts2中实现多文件上传功能的一个实例,特别是通过使用数组的方式来处理多个文件。 在Struts2中,多文件上传的核心在于使用`&lt;s:file&gt;`标签,它可以嵌套在表单中,...

    struts2-lib

    - `commons-fileupload`: 处理HTTP文件上传的库,Struts2使用它来支持用户上传文件。 - `commons-lang3`: Apache Commons提供的Java实用工具类库,增强Java的基本功能。 - `javassist`: 动态代码生成库,Struts2...

    struts2-多文件上传

    1. **Action类的配置**:首先,你需要创建一个Struts2 Action类,该类将处理文件上传请求。在Action类中,定义一个`List&lt;ultipartFile&gt;`类型的属性,用于存储上传的文件。Struts2的`@Result`注解用于指定文件上传...

    struts-2.5.14-最核心的文件jar

    在Struts2中,它用于处理文件上传和下载等操作。 9. **commons-fileupload-1.3.3.jar**:Apache Commons FileUpload是处理HTTP多部分表单数据的库,常用于处理用户上传的文件。在Struts2中,结合commons-io库,实现...

    struts2-upload-jar

    1. **配置文件**:在Struts2框架中,`struts.xml`是核心配置文件,用于定义Action、Result和其他配置。为了使用文件上传功能,你需要在该文件中添加相应的配置,比如指定处理文件上传的Action类和结果类型。 2. **...

    [原]Struts2-文件上传与下载

    在Struts2中,文件上传和下载是常见的功能需求,它们对于用户交互性至关重要,例如用户提交表单时上传图片或文档,或者系统提供文件资源下载服务。本篇文章将深入探讨Struts2中的文件上传和下载机制。 首先,我们来...

    struts2-文件上传-配置

    首先,为了支持文件上传,我们需要在Struts2的核心配置文件`struts.xml`中添加相应的拦截器。Struts2内置了一个名为`params`的拦截器,可以处理表单数据,但不包括文件。因此,我们需要引入`fileUpload`拦截器,该...

    burplugin-java-rce:******本软件仅用于学习交流禁止用于任何非法行为******本版本支持elasticsearch java语言远程命令执行及文件上传elasticsearchgroov语言远程命令执行及文件上传struts2-005, struts2-009,struts2-013,struts2-016,struts2-019,struts2-020,struts2-devmode,struts2-032,struts2-033,struts2-037,struts2-045,

    本版本支持elasticsearch java语言远程命令执行及文件上传elasticsearchgroov语言远程命令执行及文件上传struts2-005,struts2-009,struts2-013,struts2-016,struts2-019,struts2-020,struts2-devmode,struts2...

    struts2-demo

    搭建一个简单的struts2开发环境 开发Struts2应用最少需要的JAR: a. struts2-core-2.x.x.jar : Struts2 框架的核心... commons-fileupload-1.2.1.jar文件上传组件,2.1.6版本后必须加入此文件 g. commons-io-1.x.x.jar

    struts2-2.2.3-all.zip

    样例通常包含了一些基础的功能实现,如表单验证、文件上传下载、拦截器使用等,可以帮助开发者快速上手并理解Struts2的基本用法。通过研究这些样例,开发者可以学习到如何配置Struts2、如何编写Action类、如何使用...

    Struts2VulsTools-Struts2系列漏洞检查工具

    优化部分EXP在部分情况下被WAF拦截的问题,提高检测成功率,优化自定义上传路径exp,文件所在目录不存在时自动创建目录,防止文件因为目录不存在,导致上传失败。 2018-08-24: 增加S2-057 Struts 2.3 to 2.3.34,...

Global site tag (gtag.js) - Google Analytics