SpringMVC 通过commons-fileupload实现文件上传功能

SpringMVC 通过commons-fileupload实现文件上传功能

SpringMVC是Java Web开发中广泛使用的MVC框架,而文件上传是Web开发中频繁使用的功能之一。通过常用的文件上传组件commons-fileupload,可以方便地实现SpringMVC的文件上传功能。

添加commons-fileupload依赖

首先需要在项目的pom.xml文件中添加commons-fileupload依赖:

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

编写上传文件的HTML表单

编写上传文件的HTML表单,如下所示:

<form action="/uploadFile" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <button type="submit">上传文件</button>
</form>

其中,enctype属性需要设置为multipart/form-data,这是因为在文件上传过程中需要传输二进制文件内容,而enctype属性可以指定表单以二进制格式提交。

编写SpringMVC Controller

编写SpringMVC的Controller,上传文件的过程在Controller中完成。下面给出一个简单的Controller代码示例。

@Controller
public class FileUploadController {

    @PostMapping("/uploadFile")
    public String uploadFile(@RequestParam("file") MultipartFile file) {
        if (file.isEmpty()) {
            // 如果文件为空,返回错误信息
            return "文件为空";
        }

        try {
            // 获取上传文件的字节流
            byte[] bytes = file.getBytes();

            // 上传文件处理逻辑,这里略去

            // 处理完毕,返回成功信息
            return "上传成功";
        } catch (IOException e) {
            // 发生异常,返回错误信息
            return "上传失败:" + e.getMessage();
        }
    }
}

以上代码中,@PostMapping注解用于指定上传文件的API路径,@RequestParam注解用于获取文件流。getBytes()方法可以获取上传文件的字节流,即文件内容。

在实际应用中,还需要对上传文件进行一些检查和处理,例如检查文件大小和类型,以及将文件保存到服务器本地。这里不加赘述,感兴趣的读者可以自行查阅文档。下面是一个完整的上传文件的Controller代码示例。

@Controller
public class FileUploadController {

    @Autowired
    private Environment env;

    @PostMapping("/uploadFile")
    public String uploadFile(@RequestParam("file") MultipartFile file) {
        if (file.isEmpty()) {
            return "文件为空";
        }

        try {
            String uploadPath = env.getProperty("upload.path");

            // 判断上传文件大小是否超过限制
            long fileSizeLimit = 1024 * 1024 * 10; // 10 MB
            if (file.getSize() > fileSizeLimit) {
                return "上传失败:文件大小超出限制";
            }

            // 判断上传文件类型是否合法
            String fileType = file.getContentType();
            List<String> allowedTypes = Arrays.asList("image/jpeg", "image/png", "image/gif");
            if (!allowedTypes.contains(fileType)) {
                return "上传失败:文件类型不合法";
            }

            // 将上传文件保存到服务器本地
            String originalFilename = file.getOriginalFilename();
            String extension = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
            String newFilename = UUID.randomUUID().toString() + "." + extension;
            Path filePath = Paths.get(uploadPath + newFilename);
            Files.write(filePath, file.getBytes());

            // 上传文件处理逻辑

            return "上传成功";
        } catch (IOException e) {
            return "上传失败:" + e.getMessage();
        }
    }
}

这里添加了文件大小和类型的检查,以及将上传文件存储到服务器本地的逻辑。

测试文件上传功能

最后在浏览器中访问上传文件的HTML表单,选择一个文件并提交,可以看到后台接收到请求并返回相应结果。上传的文件会被保存到服务器指定的路径。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringMVC 通过commons-fileupload实现文件上传功能 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Java8 将List转换为用逗号隔开的字符串的多种方法

    让我来详细讲解一下Java8将List转换为用逗号隔开的字符串的多种方法。 方法一:使用String.join()方法 使用String.join()方法是将List转换为用逗号隔开的字符串最为简单的方法之一。该方法java8中引入,允许我们将字符串列表连接起来,用指定的分隔符分隔。 示例代码如下: List<String> list = Arr…

    Java 2023年5月20日
    00
  • Spring Boot 2.2 正式发布,大幅性能提升 + Java 13 支持

    Spring Boot 是基于 Spring 快速开发应用程序的框架,可以极大地简化 Spring 应用的初始搭建以及开发过程中的烦琐配置。2019年10月17日,Spring Boot 2.2 正式发布,不仅大幅度提升了性能,还支持最新的 Java 13 版本。下面我们详细讲解 Spring Boot2.2 的完整攻略。 1. Spring Boot 2.…

    Java 2023年5月15日
    00
  • java实现将字符串中首字母转换成大写,其它全部转换成小写的方法示例

    要实现将字符串中首字母转换成大写,其它全部转换成小写,可以采用如下两种方法。 方法一:使用String的toUpperCase和toLowerCase方法 首先先将字符串全部转换成小写,这样后面才能将首字母转换成大写 然后取出字符串的第一个字符,将其转换成大写,这样就实现了将首字母转换成大写 最后将第一步转换成小写的部分和第二步转换成大写的部分拼接起来,就实…

    Java 2023年5月27日
    00
  • jsp页面中窗口关闭,退出的方式分享

    下面我会详细讲解如何在 JSP 页面中实现窗口关闭和退出的方式。 使用 JavaScript 关闭窗口 可以使用 JavaScript 来实现关闭窗口的功能。具体代码如下所示: <button onclick="window.close();">关闭窗口</button> 可以在 JSP 页面中将上述代码添加到一个…

    Java 2023年6月15日
    00
  • SpringSecurity数据库进行认证和授权的使用

    SpringSecurity是一个专门用于处理应用程序安全认证和授权的框架。它提供了一系列的功能能够让我们轻松地实现基于角色、基于资源的权限控制。为了实现安全认证和授权,SpringSecurity可以使用多种数据源,其中最常用的是数据库。在本篇文章中,我将会详细讲解如何使用数据库进行SpringSecurity的认证和授权,包括以下内容: 导入相关依赖 在…

    Java 2023年5月20日
    00
  • Sprint Boot @CacheEvict使用方法详解

    在Spring Boot中,@CacheEvict注解用于从缓存中删除数据。使用@CacheEvict注解可以指定在何时从缓存中删除数据,例如在更新数据时。本文将详细介绍@CacheEvict注解的作用和使用方法,并提供两个示例说明。 @CacheEvict注解作用 在Spring Boot中,@CacheEvict注解的作用是从缓存中删除数据。使用@Cac…

    Java 2023年5月5日
    00
  • Java数据结构之队列的简单定义与使用方法

    Java数据结构之队列的简单定义与使用方法 什么是队列? 队列是一种特殊的线性表,它支持在表的前端(入队)插入元素,同时支持在表的后端(出队)删除元素。队列是先进先出(FIFO)的数据结构,即其和人们排队相一致,先来先服务。 在Java中,队列在java.util包中实现,具体类为java.util.Queue接口,它是一种典型的集合,继承了java.uti…

    Java 2023年5月26日
    00
  • java模拟post请求发送json的例子

    下面就详细讲解Java模拟POST请求发送JSON的例子的完整攻略。 步骤一:导入相关库 在Java程序中发送POST请求需要用到一些库,你需要在代码前导入这些库。 import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; impor…

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