基于Struts文件上传(FormFile)详解

基于Struts文件上传(FormFile)详解

1. 引入依赖

首先,需要在项目中引入struts-fileupload库。这个库是用来实现文件上传功能的。在项目的pom.xml文件中,添加以下依赖:

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.3</version>
</dependency>

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts-core</artifactId>
    <version>1.3.10</version>
</dependency>

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts-fileupload</artifactId>
    <version>1.3.10</version>
</dependency>

2. 创建表单页面

在页面中需要添加文件上传表单,创建方法如下:

<form action="uploadFile" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="Upload">
</form>

3. 创建Action

Action中创建对应的方法,来处理文件上传和后续操作。首先需要导入FormFile类,用于接收上传的文件。

import org.apache.struts.upload.FormFile;

然后在方法中定义FormFile类型的变量来接收文件:

public class FileUploadAction extends Action {
    private FormFile file;
    // getters and setters
}

处理文件上传的方法如下:

public ActionForward uploadFile(ActionMapping mapping, ActionForm form,
                             HttpServletRequest request, HttpServletResponse response)
    throws Exception {

    FileUploadAction formBean = (FileUploadAction) form;
    FormFile file = formBean.getFile();

    if (file != null && file.getFileName() != null && file.getFileName().length() > 0) {
        // Save file to local file system
        String pathToSave = "C:\\uploads\\" + file.getFileName();
        System.out.println(pathToSave);
        FileOutputStream outputStream = new FileOutputStream(pathToSave);
        outputStream.write(file.getFileData());
        outputStream.close();

        // Forward to success page
        return mapping.findForward("success");
    } else {
        // Forward to error page
        return mapping.findForward("error");
    }
}

在方法中,如果文件存在并接收成功,FileOutputStream将把文件保存到指定的本地文件系统路径中。如果文件上传失败,则转到错误页面。

示例1

以下示例演示了如何上传文件,并打印其名称:

public ActionForward uploadFile(ActionMapping mapping, ActionForm form,
                             HttpServletRequest request, HttpServletResponse response)
    throws Exception {

    FileUploadAction formBean = (FileUploadAction) form;
    FormFile file = formBean.getFile();

    if (file != null && file.getFileName() != null && file.getFileName().length() > 0) {

        // Print file name
        System.out.println("File name: " + file.getFileName());

        // Forward to success page
        return mapping.findForward("success");
    } else {
        // Forward to error page
        return mapping.findForward("error");
    }
}

示例2

以下示例演示了上传文件后,在JSP页面中显示上传的文件信息:

public ActionForward uploadFile(ActionMapping mapping, ActionForm form,
                             HttpServletRequest request, HttpServletResponse response)
    throws Exception {

    FileUploadAction formBean = (FileUploadAction) form;
    FormFile file = formBean.getFile();

    if (file != null && file.getFileName() != null && file.getFileName().length() > 0) {
        // Save file to local file system
        String pathToSave = "C:\\uploads\\" + file.getFileName();
        System.out.println(pathToSave);
        FileOutputStream outputStream = new FileOutputStream(pathToSave);
        outputStream.write(file.getFileData());
        outputStream.close();

        // Forward to success page with uploaded file details
        request.setAttribute("fileName", file.getFileName());
        request.setAttribute("fileType", file.getContentType());
        request.setAttribute("fileSize", file.getFileSize());
        return mapping.findForward("success");
    } else {
        // Forward to error page
        return mapping.findForward("error");
    }
}

在方法中,如果文件存在并接收成功,将文件信息设置为request对象中的属性。在成功页面中,通过以下方式,在JSP页面中显示上传的文件信息:

File name: ${fileName}<br>
File type: ${fileType}<br>
File size: ${fileSize}<br>

以上就是使用FormFile实现文件上传的完整攻略,示例中演示了两种不同的应用场景。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于Struts文件上传(FormFile)详解 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java实现向Word文档添加文档属性

    下面我将详细讲解如何使用Java向Word文档添加文档属性。 1. Word文档属性 在Word文档中,文档属性是描述文档特性的元数据,例如作者、标题、主题等等。它们可以加强搜索效果、提取有用信息和跟踪文档版本。文档属性通常包含在文档内部,并不会在文档中显示出来,但可以通过Word菜单中的文件属性信息查看。 2. Java实现方法 Java可以通过POI库(…

    Java 2023年5月19日
    00
  • Spring Boot 与 kotlin 使用Thymeleaf模板引擎渲染web视图的方法

    首先,在使用Thymeleaf模板引擎前,我们需要在Spring Boot应用程序中添加Thymeleaf依赖,可以在pom.xml文件中添加以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boo…

    Java 2023年6月15日
    00
  • Typescript是必须要学习吗?如何学习TS全栈开发

    Typescript是一种开源的编程语言,由微软开发和维护。它是Javascript的超集,意味着它支持Javascript中的所有功能。尽管Typescript在开发本质上与Javascript相同,但它提供了一些额外的功能,主要是类型系统和面向对象编程的概念,这些功能使得开发更加轻松和规范化。 Typescript的优点: 更快的开发:可以通过类型检查避…

    Java 2023年5月23日
    00
  • java 中maven pom.xml文件教程详解

    我来详细讲解一下“Java 中 Maven pom.xml 文件教程详解”的攻略。 1. Maven 简介 Apache Maven 是一个 Java 项目管理工具,可以帮助我们管理项目的构建、依赖关系、文档生成、发布等等。它基于项目对象模型(POM)进行构建,并预定义了一些标准生命周期阶段和目标(Goal)。 Maven 使用强制约定的目录结构来组织项目文…

    Java 2023年5月20日
    00
  • Java吃货联盟订餐系统代码实例

    这里是一份详细的“Java吃货联盟订餐系统代码实例”的完整攻略。 前言 本文将介绍一个简单易学的订餐系统代码实例,它是一个Java Web应用程序,旨在演示如何用Java创建和部署Web应用程序,并使用Maven和Tomcat等常见的工具和框架。 设计思路 该订餐系统具备基本的用户注册、登录、添加菜品到购物车、下单等功能,让用户可以在线订餐,而店家可以方便地…

    Java 2023年5月31日
    00
  • mybatisPlus条件构造器常用方法小结

    《MyBatisPlus条件构造器常用方法小结》主要讲解MyBatisPlus中条件构造器的常用方法,以及如何使用这些方法构造SQL语句,主要包括以下几个部分: 1. 前言 MyBatisPlus提供了非常方便的条件构造器来构造SQL语句,可以避免手写SQL语句带来的错误和繁琐。在使用条件构造器时,我们可以通过链式调用的方式,非常方便地进行条件的拼接和组合。…

    Java 2023年5月20日
    00
  • 如何使用Idea搭建全注解式开发的SpringMVC项目

    下面是使用Idea搭建全注解式开发的SpringMVC项目的完整攻略步骤: 步骤一:创建Maven项目 打开Idea,点击 File -> New -> Project,选择 Maven,默认的 GroupId、ArtifactId、Version 可以不用修改。 点击 Next,在下一步中勾选 Create from archetype,选择 …

    Java 2023年5月16日
    00
  • js鼠标滑过弹出层的定位IE6bug解决办法

    下面是详细讲解“js鼠标滑过弹出层的定位IE6bug解决办法”的完整攻略。 问题描述 当使用JavaScript实现鼠标滑过弹出层的定位时,在IE6浏览器中会出现定位错误的问题,即定位偏移问题。这是因为IE6浏览器中对定位方式的支持不同于现代浏览器,导致JavaScript计算位置出现偏差。 解决办法 解决IE6下鼠标滑过弹出层定位的问题,可以使用以下两种方…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部