vue使用el-upload实现文件上传功能

news/2024/11/22 21:46:29/

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、前台Vue
  • 二、后台Springboot
  • 总结


前言

因为我是vue+springboot前后分离,要跨域,就不能用默认的action写请求地址,我用axios时最困扰的就是怎么拿到那个真实的文件,然后给传给后台。

其实可以通过自带的onchanne触发方法获得文件列表,文件信息中那个raw就是真实的文件。

写的时候,刚开始我是直接把el-upload里面的button中加了点击事件,但是每次文件还没选,就已经向后台发出请求了,当然传不过去,于是外面套了个form。

element-ui组件使用可以查看文档


一、前台Vue

<template><el-form><el-form-item label="姓名" prop="name"><el-input v-model="name"></el-input></el-form-item><el-form-item><el-upload ref="upfile"style="display: inline":auto-upload="false":on-change="handleChange":file-list="fileList"action="#"><el-button  type="success">选择文件</el-button></el-upload></el-form-item><el-form-item><el-button  type="success" @click="upload">点击上传</el-button></el-form-item></el-form></template>
<script>
export default {name:'UploadUi',data(){return{name:'',fileList:[]}},methods:{//通过onchanne触发方法获得文件列表handleChange(file, fileList) {this.fileList = fileList;console.log(fileList)},upload(){let fd = new FormData();fd.append("name",this.name);this.fileList.forEach(item=>{//文件信息中raw才是真的文件fd.append("files",item.raw);//console.log(item.raw)})this.$axios.post('/uploadUi',fd).then(res=>{if (res.data.code === 200) {//console.log(res);this.$message('上传成功')}else{this.$message('失败')}})},}
}
</script>

二、后台Springboot

package com.example.demo.controller;import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.List;import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import com.example.demo.entity.ListParam;
import com.example.demo.entity.MyUser;
import com.example.demo.entity.Result;@RestController
@ResponseBody
@CrossOrigin
@RequestMapping("/api")
public class UploadController {@PostMapping("/uploadUi")public Result upFile(@RequestParam("name")String name,@RequestParam("files") MultipartFile[] files ) {System.out.println("开始");System.out.println(name);if(files != null) {for(MultipartFile file : files) {String fileName = file.getOriginalFilename();System.out.println(fileName);try{File mkdir = new File("F:\\app\\file");if(!mkdir.exists()) {mkdir.mkdirs();}//定义输出流,将文件写入硬盘FileOutputStream os = new FileOutputStream(mkdir.getPath()+"\\"+fileName);InputStream in = file.getInputStream();int b = 0;while((b=in.read())!=-1){ //读取文件 os.write(b);}os.flush(); //关闭流 in.close();os.close();}catch(Exception  e) {e.printStackTrace();return new Result(401,"失败");}}return new Result(200,"成功");}else {return new Result(401,"文件找不到");}}}

总结

以上就是本文的全部内容,希望对大家的学习有所帮助

需要系统源码或者BiShe加V
ID:talon712


http://www.ppmy.cn/news/393219.html

相关文章

PCIe MSIx ITS

老男孩读PCIe介绍系列_Ha-Ha-Interesting的博客-CSDN博客_老男孩读pcie 路由部分可忽略&#xff0c;重点看第6节 PCIe学习笔记之MSI/MSI-x中断及代码分析_Hober_yao的博客-CSDN博客_pci_alloc_irq_vectors

PCIE MSI-X Capability

每一个 Capability 结构都有唯一的ID 号&#xff0c;每一个Capability 寄存器都有一个指针&#xff0c;这个指针指向下一个Capability 结构&#xff0c;从而组成一个单向链表结构&#xff0c;这个链表的最后一个Capability 结构的指针为0。链表开始的指针地址为0x34处的1byte数…

佳能桌面计算机,带你装Bee带你飞:Canon 佳能 X Mark I Keypad BT 计算器

带你装Bee带你飞&#xff1a;Canon 佳能 X Mark I Keypad BT 计算器 2014-12-30 10:19:14 37点赞 93收藏 91评论 亲爱的张大妈家属大家好&#xff5e;好久不见还有人记得我吗&#xff5e;最近因为保手所以在张大妈隐匿了一段时间&#xff5e;之前在本站见到有人晒了Canon X Mar…

基于Spring Boot 3.X + Vue3 开发的宇宙任务清单

宇宙任务清单是一个融合了Spring Boot和Vue 3的任务管理系统。该系统为规划、跟踪和管理任务提供了一个功能强大且易于使用的平台。通过利用Spring Boot作为后端框架,宇宙任务清单能够有效地处理任务的数据存储和业务逻辑。同时,采用Vue 3作为前端框架,宇宙任务清单为用户提…

骨传导耳机排名前十名,双十一数码耳机购买清单

骨传导耳机哪个最好用&#xff0c;相信这是很多人在问的一个事情&#xff0c;下面我就分享几款我认为较为好用的骨传导耳机给大家&#xff0c;看看这些耳机有没有你喜欢的吧~这些耳机在音质、佩戴舒适度、续航时间、防水能力上都是很不错的~ 一、南卡Runner Pro4骨传导蓝牙耳机…

发烧级蓝牙耳机哪款音质最好?200元内性价比高的蓝牙耳机

废话不多说&#xff0c;接下来我将给大家罗列一下目前无线耳机市场综合性价比最高的几款产品&#xff0c;分享给正在为选择什么蓝牙耳机好而烦恼的朋友&#xff0c;本文推荐的这些机型&#xff0c;大家只需要考虑好价格和特色&#xff0c;闭着眼买都不会出错。 推荐一&#xf…

高并发架构设计方法

我们知道&#xff0c;“高并发”是现在系统架构设计的核心关键词。一个架构师如果设计、开发的系统不支持高并发&#xff0c;那简直不好意思跟同行讨论。但事实上&#xff0c;在架构设计领域&#xff0c;高并发的历史非常短暂&#xff0c;这一架构特性是随着互联网&#xff0c;…

哪一款蓝牙耳机音质最好?2023发烧级音质蓝牙耳机推荐

自从苹果取消3.5mm耳机孔后&#xff0c;蓝牙耳机便算是真正地进入人们的日常生活&#xff0c;现如今蓝牙耳机的使用频率已然超过有线耳机&#xff0c;并逐渐占据了市场的主导地位。随着蓝牙耳机越来越多&#xff0c;哪一款蓝牙耳机音质最好&#xff1f;今天&#xff0c;我来给大…