Spring实现文件上传(示例代码)

  1. 添加依赖

进行文件上传需要添加相关依赖,包括spring-webmvc、spring-context和commons-fileupload。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.2.12.RELEASE</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.2.12.RELEASE</version>
</dependency>

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.4</version>
</dependency>
  1. 配置Dispatcher Servlet

在web.xml中配置Dispatcher Servlet,映射URL和应用上下文。

<servlet>
  <servlet-name>springmvc</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/springmvc-servlet.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
  <servlet-name>springmvc</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>
  1. 添加MultipartResolver Bean

MultipartResolver负责处理文件上传请求。创建一个MultipartResolver Bean,并配置其最大上传文件大小等属性。

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSizePerFile" value="10485760"/>
</bean>
  1. 创建Controller

创建一个Spring MVC Controller,在其中添加一个方法来处理文件上传请求。

@Controller
public class FileUploadController {

    @RequestMapping(value = "/fileUpload", method = RequestMethod.POST)
    public @ResponseBody String handleFileUpload(HttpServletRequest request) {

        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Iterator<String> iterator = multipartRequest.getFileNames();

        while (iterator.hasNext()) {
            MultipartFile multipartFile = multipartRequest.getFile(iterator.next());

            if (multipartFile.getSize() > 0) {
                String fileName = multipartFile.getOriginalFilename();
                String contentType = multipartFile.getContentType();
                byte[] bytes = multipartFile.getBytes();

                // 处理文件上传,例如保存到本地磁盘
                // ...
            }
        }

        return "File upload is successful!";
    }
}
  1. 添加HTML表单

创建一个HTML表单,并指定其enctype属性为multipart/form-data,使用POST请求向/fileUpload URL提交文件上传请求。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>File Upload Example</title>
</head>
<body>
    <form action="/fileUpload" method="POST" enctype="multipart/form-data">
        Select a file: <input type="file" name="file" /><br/><br/>
        <input type="submit" value="Upload" />
    </form>
</body>
</html>

示例1:使用Ajax上传文件

可以使用Ajax来提交文件上传请求,示例如下所示:

$(document).ready(function() {

    $("#uploadForm").submit(function(event) {

        var data = new FormData($(this)[0]);

        $.ajax({
            url: "/fileUpload",
            type: "POST",
            data: data,
            processData: false,
            contentType: false,
            success: function(response) {
                alert(response);
            }
        });

        event.preventDefault();
    });

});

示例2:限制上传文件类型

可以通过MultipartFile.getContentType()方法获取上传文件的类型,可以用getContentType()方法来限制上传文件的类型。例如,只允许上传PDF和图片文件可以使用以下代码:

if (multipartFile.getSize() > 0) {
    String fileName = multipartFile.getOriginalFilename();
    String contentType = multipartFile.getContentType();
    byte[] bytes = multipartFile.getBytes();

    // 限制上传文件类型
    if (contentType.startsWith("application/pdf") || 
        contentType.startsWith("image/")) {

        // 处理文件上传,例如保存到本地磁盘
        // ...
    }
    else {
        // 文件类型不合法
        // ...
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring实现文件上传(示例代码) - Python技术站

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

相关文章

  • hibernate更新数据方法小结

    Hibernate更新数据方法小结 Hibernate是一个广泛使用的ORM框架,可以方便地操作数据库。本文将介绍Hibernate中的更新数据方法,包括使用HQL语句和使用Hibernate Session的API方法。 使用HQL语句更新数据 HQL(Hibernate Query Language)是Hibernate独有的一种查询语言,可以操作实体类…

    Java 2023年5月20日
    00
  • 详解Spring3.x 升级至 Spring4.x的方法

    那我来为您讲解一下“详解Spring3.x 升级至 Spring4.x的方法”的完整攻略。 1. 升级前的准备工作 首先,我们需要备份现有的代码,并记录当前的 Spring 版本。然后,我们需要检查我们的代码是否依赖于废弃的 API,以免在升级后出现问题。同时,我们还需准备升级所需的依赖项和工具,如 Maven 或 Gradle。 2. 升级 Spring …

    Java 2023年5月19日
    00
  • Java如何发起http请求的实现(GET/POST)

    下面是详细的Java发起HTTP请求的实现攻略: 1. 准备工作 在Java中发起HTTP请求需要使用到java.net包中的一些类和方法。因此,我们需要先导入以下两个类: import java.net.HttpURLConnection; import java.net.URL; 2. 发起GET请求 下面我们通过一个简单的示例来讲解如何使用Java发起…

    Java 2023年5月26日
    00
  • Spring Security配置保姆级教程

    针对“Spring Security配置保姆级教程”的完整攻略,以下是详细的讲解: 前言 Spring Security 是一个基于 Spring 框架的安全模块,为Spring应用提供了声明式的安全访问控制。本文将详细讲解 Spring Security 的配置,帮助初学者掌握 Spring Security 的使用方法。 基本概念 在使用 Spring …

    Java 2023年5月20日
    00
  • 深入理解spring事务

    深入理解Spring事务 Spring事务管理是Spring框架中的核心特性之一。使用Spring事务管理,可以为Java方法自动添加事务控制。在本文中,我们将深入理解Spring事务,并提供一些示例代码进行演示。 事务概述 事务是一组操作,这组操作被看作是一个不可分割的单元,必须要么同时成功执行,要么同时回滚。在关系型数据库中,事务通常应用于一组SQL语句…

    Java 2023年5月20日
    00
  • Java NegativeArraySizeException异常解决方案

    我将为您讲解解决“Java NegativeArraySizeException异常”的完整攻略。 什么是NegativeArraySizeException异常? 首先,我们需要了解一下NegativeArraySizeException异常。它是Java中的一种运行时异常,当我们使用负数作为数组大小时,就会抛出这个异常。 解决方案 要解决Negative…

    Java 2023年5月27日
    00
  • java之CSV大批量数据入库的实现

    Java之CSV大批量数据入库的实现 背景 在实际项目中,常常需要处理大量的数据,而CSV格式是一种很常见的数据格式,因此对于CSV数据进行入库操作是非常必要的。本文将介绍如何使用Java实现CSV大批量数据入库的实现。 准备工作 在开始正文之前,我们需要进行几个工作: 导入相关依赖 在项目中需要使用opencsv来解析CSV文件,因此需要在maven或gr…

    Java 2023年5月20日
    00
  • SpringBoot实现单文件与多文件上传功能

    下面是关于“SpringBoot实现单文件与多文件上传功能”的完整攻略: 1. 单文件上传功能实现 1.1. 添加依赖 首先,在pom.xml文件中添加如下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sprin…

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