jquery+springboot实现文件上传功能

以下是jquery+springboot实现文件上传功能的完整攻略。

准备工作

引入依赖

首先需要在pom.xml中引入如下依赖:

<!-- springboot web依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- springboot文件上传依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

<!-- commons-fileupload依赖 -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.3</version>
</dependency>

<!-- commons-io依赖 -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>

配置文件上传临时目录

application.properties中配置文件上传的临时目录:

spring.servlet.multipart.location=D:/temp/

前端实现

在HTML页面上添加文件上传的表单:

<form enctype="multipart/form-data">
    <input type="file" name="file"/>
    <button type="button" onclick="upload()">上传</button>
</form>

实现上传文件的jQuery代码:

function upload() {
    var formData = new FormData();
    formData.append('file', $('input[name="file"]')[0].files[0]);
    $.ajax({
        url: '/upload',
        type: 'POST',
        data: formData,
        contentType: false,
        processData: false,
        success: function (data) {
            alert(data);
        },
        error: function () {
            alert('上传失败');
        }
    });
}

后端实现

通过@RestController注解将上传接口暴露出来,实现文件上传的文件处理逻辑:

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

@RestController
public class UploadController {
    @Value("${spring.servlet.multipart.location}")
    private String uploadDir;

    @PostMapping("/upload")
    public String upload(@RequestParam("file") MultipartFile file) throws IOException {
        if (file.isEmpty()) {
            return "文件为空";
        }
        String filename = file.getOriginalFilename();
        String ext = FilenameUtils.getExtension(filename);
        if (StringUtils.isNotEmpty(ext) && !ext.equalsIgnoreCase("txt")) {
            return "只允许上传txt文件";
        }
        File destFile = new File(uploadDir, filename);
        FileUtils.writeByteArrayToFile(destFile, file.getBytes());
        return "上传成功";
    }
}

示例说明

示例1:上传txt文件

如上所示,在前端的表单中选择一份txt文件点击上传,上传成功后会弹出提示框:

上传成功

如果选择的文件不是txt文件,则会提示:

只允许上传txt文件

示例2:上传空文件

如果选择了空文件进行上传,则会提示:

文件为空

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

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

相关文章

  • 如何使用jQuery来设置无值的属性

    使用 jQuery 来设置无值的属性,可以通过以下步骤: 步骤一:选择需要操作的元素 需要设置属性的元素,可以使用 jQuery 选择器选择,例如: let $element = $(‘img’); 上述代码会选择文档中所有的 img 元素,并将它们存储在 $element 变量中供之后使用。 步骤二:设置属性 使用 jQuery 提供的 attr() 方法…

    jquery 2023年5月12日
    00
  • 如何使用DataTables插件实现单行选择和删除

    以下是关于如何使用DataTables插件实现单行选择和删除的完整攻略: 什么是单行选择和删除? 单行选择和删除是指在DataTables中,可以选择一行数据并将其删除。 如何使用单行选择和删除? 可以使用以下代码来实现单行选择和删除: var table = $(‘#example’).DataTable(); $(‘#example tbody’).on…

    jquery 2023年5月12日
    00
  • 如何用jQuery找到所有没有颜色名称的输入,并将文字附加到旁边的span上

    在jQuery中,我们可以使用选择器来找到所有没有颜色名称的输入,并将文字附加到旁边的<span>元素上。以下是两种方法: 方法1:使用:not()选择器 我们可以使用:not()选择器来选择所有没有颜色名称的输入。以下是示例代码: $("input:not([name])").each(function() { $(this…

    jquery 2023年5月9日
    00
  • 如何用jQuery删除一个HTML元素的所有属性

    使用jQuery可以轻松地删除一个HTML元素的所有属性。以下是详细的攻略,包含两个示例,演示如何使用jQuery删除一个HTML元素的所有属性: 步骤1:引入jQuery库 在使用之前,需要先在HTML文引入jQuery库。可以通过以下方式引入: <script src="https://code.jquery.com/jquery-3.6…

    jquery 2023年5月9日
    00
  • jQWidgets jqxBarGauge max 属性

    jQWidgets jqxBarGauge max属性 jQWidgets是一个基于jQuery的UI组件库,提供了丰富的UI件和工具,包括表格、图表单、历、菜单。jqBarGauge是jQWidgets中的一个组件可以用于水平或垂直的条形图。jqBarGauge提供了max`属性,用于设置条形图的最大值。 max属性的基本语法 max属性用于设置条形图的最…

    jquery 2023年5月9日
    00
  • Python全栈之学习JQuery

    Python全栈之学习JQuery攻略 1. 了解JQuery是什么 JQuery是一款流行的JavaScript库,可以大大简化JavaScript的开发。学习JQuery前,需要首先了解JQuery是什么,以及它能为你的网页开发带来什么好处。 2. 学习JQuery的基础知识 在学习使用JQuery之前,需要掌握一些JavaScript的基础知识,例如变…

    jquery 2023年5月27日
    00
  • jQuery Mobile页面叠加主题选项

    下面是详细的“jQuery Mobile页面叠加主题选项”的攻略。 简介 jQuery Mobile是一个基于jQuery的移动端前端开发框架,它提供了丰富的UI控件和页面组件,用于快速构建移动端网页应用。其中,页面主题是jQuery Mobile中的重要功能之一,可以通过主题来实现网页与应用的不同外观和风格,并根据不同场景进行适配。 在jQuery Mob…

    jquery 2023年5月12日
    00
  • jQWidgets jqxWindow maxHeight属性

    关于jQWidgets jqxWindow组件的maxHeight属性,我来给您详细讲解一下。 1. maxHeight属性是什么 maxHeight是jQWidgets jqxWindow组件的一个属性,它是一个用来指定窗口最大高度的数字。当窗口高度超过最大高度时,会出现滚动条,避免窗口高度超出屏幕而无法显示。 具体属性定义如下: //HTML <d…

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