SpringBoot文件上传【element ui组件+java后台读取】

简介: SpringBoot文件上传【element ui组件+java后台读取】

前端

html

 <el-upload class="upload-demo" :action="excelAction" :data="uploadPostData" :on-preview="handlePreview"
   :on-remove="handleRemove" :before-remove="beforeRemove" :on-success="handleSuccess" :headers="uploadHeaders"
     multiple :limit="1" :on-exceed="handleExceed" :file-list="fileList" style="margin-top: 10px;width: 100%;">
     <div style="display: flex;">
         <div class="fileNameClass"><el-tag>所导入文件</el-tag>&emsp;{{ fileName }}</div>
         <el-button size="small" type="primary" style="margin-left: 10px;height: 43px;">文件上传</el-button>
     </div>
     <div slot="tip" class="el-upload__tip" style="color: red;">
         只能上传xlxs、xls文件,且不超过50MB
     </div>
 </el-upload>


数据声明

   passengerFlowImportDialogVisible: false,
   //文件上传地址(后端接受文件的地址)
   excelAction: BASE_URL + "/shift-scheduling-calculate-service/schedulingTask/uploadExcelFile",
   //所导入的文件名
   fileName: "",
   //文件列表
   fileList: [],
   //导入文件的同时向后台提交数据
   uploadPostData: {},
   //上传文件的请求头
   uploadHeaders: {
       token: "",
   },


方法

  handleSuccess(res) {
      this.fileName = res.fileName;
  },
  handleRemove(file, fileList) {
      console.log(file, fileList);
  },
  handlePreview(file) {
      console.log(file);
  },
  handleExceed(files, fileList) {
      this.$message.warning(
          `当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length
          } 个文件`
      );
  },
  beforeRemove(file, fileList) {
      return this.$confirm(`确定移除 ${file.name}?`);
  },
  //清除已经上传的文件
  clearFileList() {
      this.fileList = [];
  },
  //退出对话框
  exitExcelImport() {
      this.passengerFlowImportDialogVisible = false;
      this.clearFileList()
  }


样式

.fileNameClass {
    margin-bottom: 30px;
    border: 1px solid #235ada;
    padding: 5px;
    border-radius: 5px;
    width: 400px;
    text-align: left;
}


后端


  /**
     * 导入excel文件并完成解析
     *
     * @param multipartFile
     * @param paramMap
     * @return
     * @throws Exception
     */
    @PostMapping("/uploadExcelFile")
    public R uploadExcelFile(@RequestParam(value = "file", required = true) MultipartFile multipartFile, @RequestParam(required = false) Map paramMap) throws Exception {
        if (multipartFile.isEmpty() || multipartFile.getSize() > 52428800) {
            R.error(ResultCodeEnum.FAIL.getCode(), "上传文件不能为空,且不能大于50MB");
        }
        String originalFilename = multipartFile.getOriginalFilename();
        if (!(originalFilename.endsWith(".xlsx") || originalFilename.endsWith(".xls"))) {
            return R.error(ResultCodeEnum.FAIL.getCode(), "只能导入xlsx、xls文件");
        }
        InputStream inputStream = multipartFile.getInputStream();
        Workbook workbook;
        if (originalFilename.endsWith(".xlsx")) {
            workbook = new XSSFWorkbook(inputStream);
        } else {
            workbook = new HSSFWorkbook(inputStream);
        }
        return R.ok().addData("fileName", originalFilename);
    }


效果

目录
相关文章
|
2月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
24天前
|
开发框架 前端开发 网络协议
Spring Boot结合Netty和WebSocket,实现后台向前端实时推送信息
【10月更文挑战第18天】 在现代互联网应用中,实时通信变得越来越重要。WebSocket作为一种在单个TCP连接上进行全双工通信的协议,为客户端和服务器之间的实时数据传输提供了一种高效的解决方案。Netty作为一个高性能、事件驱动的NIO框架,它基于Java NIO实现了异步和事件驱动的网络应用程序。Spring Boot是一个基于Spring框架的微服务开发框架,它提供了许多开箱即用的功能和简化配置的机制。本文将详细介绍如何使用Spring Boot集成Netty和WebSocket,实现后台向前端推送信息的功能。
247 1
|
1月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
162 2
|
30天前
|
存储 消息中间件 安全
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
【10月更文挑战第9天】本文介绍了如何利用JUC组件实现Java服务与硬件通过MQTT的同步通信(RRPC)。通过模拟MQTT通信流程,使用`LinkedBlockingQueue`作为消息队列,详细讲解了消息发送、接收及响应的同步处理机制,包括任务超时处理和内存泄漏的预防措施。文中还提供了具体的类设计和方法实现,帮助理解同步通信的内部工作原理。
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
|
20天前
|
开发框架 JavaScript 前端开发
HarmonyOS UI开发:掌握ArkUI(包括Java UI和JS UI)进行界面开发
【10月更文挑战第22天】随着科技发展,操作系统呈现多元化趋势。华为推出的HarmonyOS以其全场景、多设备特性备受关注。本文介绍HarmonyOS的UI开发框架ArkUI,探讨Java UI和JS UI两种开发方式。Java UI适合复杂界面开发,性能较高;JS UI适合快速开发简单界面,跨平台性好。掌握ArkUI可高效打造符合用户需求的界面。
71 8
|
14天前
|
JavaScript NoSQL Java
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
29 0
|
1月前
|
消息中间件 存储 JSON
rabbitmq基础教程(ui,java,springamqp)
本文提供了RabbitMQ的基础教程,包括如何使用UI创建队列和交换机、Java代码操作RabbitMQ、Spring AMQP进行消息发送和接收,以及如何使用不同的交换机类型(fanout、direct、topic)进行消息路由。
22 0
rabbitmq基础教程(ui,java,springamqp)
|
1月前
|
Java 数据安全/隐私保护 容器
java当中组件和窗口的相容问题(里面包含了这些方法的作用)
Java窗口和组件的布局指南,教你如何打造一个既美观又实用的GUI界面。
28 0
|
2月前
|
缓存 监控 Java
造轮子能力大提升:基于SpringBoot打造高性能缓存组件
在快节奏的软件开发领域,"不重复造轮子" 常常被视为提高效率的金科玉律。然而,在某些特定场景下,定制化的高性能缓存组件却是提升系统性能、优化用户体验的关键。今天,我们将深入探讨如何利用SpringBoot框架,从零开始打造一款符合项目需求的高性能缓存组件,分享我在这一过程中的技术心得与学习体会。
69 6
|
3月前
|
存储 搜索推荐 Java
探索安卓开发中的自定义视图:打造个性化UI组件Java中的异常处理:从基础到高级
【8月更文挑战第29天】在安卓应用的海洋中,一个独特的用户界面(UI)能让应用脱颖而出。自定义视图是实现这一目标的强大工具。本文将通过一个简单的自定义计数器视图示例,展示如何从零开始创建一个具有独特风格和功能的安卓UI组件,并讨论在此过程中涉及的设计原则、性能优化和兼容性问题。准备好让你的应用与众不同了吗?让我们开始吧!