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);
    }


效果

目录
相关文章
|
9月前
|
Java 数据安全/隐私保护 索引
(Java)Java里JFrame窗体的基本操作(组件篇-3)
回顾 说过了下拉框和下拉列表,本篇内容将了解滚动面板和各类输入框 什么是组件? 如果不熟悉组件,可以将组件看作是某个Form表单中的表单元素,组件可以完善JFrame窗口的布局,以及一些功能; 本篇内容中所有的组件所用到的类全都来自于javax.swing这个包中,记得引入; 另:在使用组件前,请先将窗体中的内容类给实例化出来进行操作,代码如下: Container c = getContentPane(); JScollPane JScollPane类,说的就是滚动面板。它不同于其他组件,它是一个容器,
198 2
|
9月前
|
Java 索引 容器
(Java)Java里JFrame窗体的基本操作(组件篇-2)
回顾 这算是JFrame窗体基本操作的组件第二篇了,上一篇说过了单选框,复选框,按钮。 在这一篇中,我会说明下拉框和列表框 什么是组件? 自行百度:java中JFrame窗体里的组件是什么? 名字都给你想好了 ( :I ) JComBox下拉框 JComBox类,就是下拉框,实例化出来后,要填写泛型&lt;&gt;,添加是什么数据类型的内容,泛型中就写上该数据类型; JComboBox&lt;?&gt; combox = new JComboBox&lt;&gt;(); 以下实例化下拉框的时候我泛型写的全
242 1
|
9月前
|
Java 容器
(Java)Java里JFrame窗体的基础操作(组件-1)
如果不熟悉组件,可以将组件看作是某个Form表单中的表单元素,当然这只是在不熟悉组件的前提下。如果深入了解了组件,那么它有着非常多的组件,这些组件可以完善JFrame窗口的布局,以及一些功能; 本篇内容中所有的组件所用到的类全都来自于javax.swing这个包中,记得引入
198 1
|
10月前
|
Linux Go iOS开发
IDA 9.2 发布:Golang 改进、新 UI 组件、类型解析等
IDA Pro 9.2 (macOS, Linux, Windows) - 强大的反汇编程序、反编译器和多功能调试器
1593 0
|
11月前
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
513 7
|
Java 数据库连接 API
Java 8 + 特性及 Spring Boot 与 Hibernate 等最新技术的实操内容详解
本内容涵盖Java 8+核心语法、Spring Boot与Hibernate实操,按考试考点分类整理,含技术详解与代码示例,助力掌握最新Java技术与应用。
349 2
|
Web App开发 前端开发 JavaScript
Element UI框架中自定义input组件的placeholder样式。
确保这些样式在你的应用程序CSS文件中定义,且该文件已正确加载到项目中。通过以上方法,可以控制Element UI组件中input的placeholder样式,使其满足特定的设计要求。这些更改都是基于CSS伪元素进行的,因此并不会对DOM结构产生改变,保持了原有结构的简洁和高效。
934 12
|
Java 数据库连接 数据库
Java 组件详细使用方法与封装实战指南
本指南详解Java核心组件使用与封装技巧,涵盖跨平台开发、面向对象编程、多线程、数据库操作等关键内容,并提供工具类、连接池、异常及响应结果的封装方法。结合Spring框架、MyBatis、Spring Boot等主流技术,助你掌握高质量Java组件设计与开发实践。
333 2
|
移动开发 开发者
仓颉开发语言入门教程:常见UI组件介绍和一些问题踩坑
仓颉开发语言即将发布一周年,虽已有知名App应用,但教程稀缺且官网文档不够完善。幽蓝君推出系列教程,从零开始系统讲解移动开发。本期介绍常用UI组件:按钮、文本、图片、输入框与搜索框的使用方法及注意事项,帮助开发者快速上手仓颉语言。
|
Java 数据库连接 API
Java 对象模型现代化实践 基于 Spring Boot 与 MyBatis Plus 的实现方案深度解析
本文介绍了基于Spring Boot与MyBatis-Plus的Java对象模型现代化实践方案。采用Spring Boot 3.1.2作为基础框架,结合MyBatis-Plus 3.5.3.1进行数据访问层实现,使用Lombok简化PO对象,MapStruct处理对象转换。文章详细讲解了数据库设计、PO对象实现、DAO层构建、业务逻辑封装以及DTO/VO转换等核心环节,提供了一个完整的现代化Java对象模型实现案例。通过分层设计和对象转换,实现了业务逻辑与数据访问的解耦,提高了代码的可维护性和扩展性。
518 1