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和ajax。下面是具体的攻略: 1. HTML部分 首先,在HTML中需要准备一个表单,在表单中设置enctype=”multipart/form-data”属性,并添加一个文件输入框。 <form id="fileupload" action="/upload&quot…

    jquery 2023年5月27日
    00
  • JQuery的$和其它JS发生冲突的快速解决方法

    当我们在网页中引入多个JS库时,有可能会出现各个库之间发生冲突的情况,尤其是jQuery库和其它JS库的命名空间冲突问题。jQuery库中的$符号与其它JS库中的$符号可能存在冲突,这时候我们需要找到一种解决方案来避免这种情况的出现。 以下是几种方法可以快速解决jQuery的$和其它JS发生冲突的问题: 1. 使用jQuery.noConflict() jQ…

    jquery 2023年5月28日
    00
  • jQWidgets jqxCalendar titleHeight 属性

    jQWidgets 的 jqxCalendar 组件提供了 titleHeight 属性,用于设置日历标题的高度。本文将详细介绍 titleHeight 属性的使用方法,包括概述、示例以及注意事项。 titleHeight 属性概述 titleHeight 属性用于设置日历标题的高度。默认情况下,该属性为 30,即标题的高度为 30px。可以将该属性设置为任…

    jquery 2023年5月11日
    00
  • JS简单实现滑动加载数据的方法示例

    下面是详细的“JS简单实现滑动加载数据的方法示例”的攻略。 什么是滑动加载数据? 滑动加载数据是指在Web页面上滑动滚动条时,自动加载新的数据的一种功能。它可以减轻用户的操作负担,让用户无需手动点击“下一页”按钮或者“加载更多”按钮,从而更快速地浏览内容,提高用户的体验。 实现滑动加载数据功能需要用到JS的一些API以及一些滚动条的事件。 实现滑动加载数据的…

    jquery 2023年5月27日
    00
  • 如何使用jQuery克隆一个块

    以下是两个示例,演示如何使用jQuery克隆一个块: 示例1:使用.clone()函数 以下是一个示例,演示如何使用.clone()来克隆一个块: <!DOCTYPE html> <html> <head> <title>jQuery .clone() Function Example</title&gt…

    jquery 2023年5月9日
    00
  • jQWidgets jqxGrid addgroup()方法

    以下是关于“jQWidgets jqxGrid addgroup()方法”的完整攻略,包含两个示例说明: 简介 jqxGrid 控件的 addgroup() 方法用于向表格中添加分组。分组可以根据列的值对表格中的数据进行分组,以便更好地组织和显示数据。addgroup() 方法的语法如下: $("#grid").jqxGrid(‘addg…

    jquery 2023年5月10日
    00
  • jQWidgets jqxTabs标签点击事件

    首先, jqxTabs是jQWidgets中的一种控件,它用于创建多个标签页选项卡,通过点击标签页可以在内容区域显示相应的内容。 jqxTabs 提供了多种事件接口以供我们调用。 1. 触发点击事件 事件名称 selecting 说明 该事件在用户点击标签页之前触发。在触发该事件时,你可以从正在切换的标签页索引和前一个标签页索引中获取参数。 示例 $(‘#j…

    jquery 2023年5月12日
    00
  • jQuery中(function($){})(jQuery)详解

    题目所提到的 jQuery中(function($){})(jQuery) 是一个常见的jQuery插件方式,这种方式也被称为“自执行函数插件模式”。下面我将对此进行详细的讲解。 什么是自执行函数插件模式 自执行函数插件模式是一种用来扩展jQuery功能的常见方式。其主要思想是将插件代码封装到一个自执行的匿名函数闭包内部,以避免污染全局作用域。该插件会在立即…

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