基于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如何实现自动生成数据库设计文档

    实现Java自动生成数据库设计文档的过程可以分为以下几个步骤: 获取数据库的基本信息 首先需要连接到数据库,获取其中的基本信息,例如数据库的名称、版本号等。在Java中可以使用JDBC连接数据库,通过执行SQL语句获取这些信息。 获取数据库中的表信息 获取数据库中的表信息,包括表名、表的列信息等。可以通过执行SQL语句查询system表或metadata元数…

    Java 2023年5月19日
    00
  • jsp文件下载功能实现代码

    下面是实现jsp文件下载功能的完整攻略: 1. 什么是jsp文件下载功能 jsp文件下载是指在Web应用程序中,用户可以通过单击超链接或按钮等方式,将某个文件(如图片、文档、音频、视频等)下载到本地计算机上。jsp文件下载功能通常使用HTTP协议与响应头来实现。 2. 实现jsp文件下载功能的步骤 以下是实现jsp文件下载功能所需的主要步骤: 2.1. 创建…

    Java 2023年6月15日
    00
  • 浅谈java中OO的概念和设计原则(必看)

    浅谈Java中OO的概念和设计原则 一、面向对象的概念 面向对象是一种编程思想,将现实世界事物抽象成对象,对象之间通过方法进行交互,实现程序的功能。在Java中,每个对象由类来实现,类是一组具有相同属性和方法的对象的集合。 Java中三大面向对象的特性:封装、继承、多态。 1. 封装 封装就是把对象的数据和方法封装起来,对外提供统一的接口。封装可以保护对象内…

    Java 2023年5月24日
    00
  • 微信小程序实现简单手写签名组件的方法实例

    微信小程序实现简单手写签名组件的方法 1. 确定需求 首先,我们需要了解我们的需求。这里我们需要实现一个手写签名功能的组件,其具体需求如下: 用户可以在小程序中手写签名; 签名过程中,需要支持画笔颜色和粗细的选择; 签名完成后,需要将签名数据保存起来,同时提供清空签名的操作; 签名板的大小需要适应屏幕大小。 2. 实现思路 根据我们的需求,我们可以考虑以下的…

    Java 2023年5月23日
    00
  • SpringBoot快速整合Mybatis、MybatisPlus(代码生成器)实现数据库访问功能

    SpringBoot整合Mybatis 1.引入依赖 在pom.xml中引入以下依赖: <!– SpringBoot整合Mybatis依赖 –> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis…

    Java 2023年5月20日
    00
  • Spring依赖注入(DI)两种方式的示例详解

    下面我将为你详细讲解“Spring依赖注入(DI)两种方式的示例详解”的完整攻略。 1. 什么是Spring依赖注入(DI) Spring依赖注入(Dependency Injection,简称 DI)是指一个对象依赖于另一个对象。通俗一些的说法就是对象 A 需要对象 B 的协助完成某些功能,但是对象 A 并不负责创建对象 B,而是由 Spring 容器来创…

    Java 2023年5月20日
    00
  • 如何在Java中创建线程通信的四种方式你知道吗

    当多个线程共同操作同一个对象时,可能会遇到竞争态况或阻塞,需要使用线程通信来实现协调和同步,以确保程序的正确性和效率。在Java中,创建线程通信的方式有以下四种: 一、wait()和notify() wait()和notify()是Java中最基本的线程通信方式。wait()的作用是使当前线程挂起,直到另一个线程调用相同对象的notify()方法唤醒它。no…

    Java 2023年5月18日
    00
  • java的Array,List和byte[],String相互转换的方法你了解嘛

    当需要在Java中进行数组和列表(List)数据类型之间的相互转换时,以下是Java中可用的几种方法: 数组转List 方法一:使用Arrays.asList()方法 可以使用Arrays.asList()方法将数组转换为List。以下是示例代码: String[] array = {"一", "二", "三…

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