el-upload上传图片给SpringBoot后端

news/2024/4/30 23:16:14
  • 需求
    我的需求是,将上传文件的el-upload放到一个el-form里面,点击保存才提交,所以不能直接用action的方式,下面采用自定义上传的方式来完成
  • Vue前端
    主要是使用editForm.imgList来保存图片的信息,注意这里是一个对象,其格式如下

我这里后端传回来的是一个字符串数组,把他转为对象如下

 this.editForm.imgList = row.imgList.map((url,index) => ({name:index,url: url,}));

前端主要代码

<el-form><el-form-item label="描述" prop="description"><el-input type="textarea" :rows="6" v-model="editForm.description" auto-complete="off"placeholder="请输入描述"></el-input></el-form-item><el-form-item label="图片" prop="description"><el-uploadaction=""list-type="picture-card"multiple:on-change="handlChange":file-list="editForm.imgList":on-error="handleErr"ref="upload":auto-upload="false"><i slot="default" class="el-icon-plus"></i><div slot="file" slot-scope="{file}"><imgclass="el-upload-list__item-thumbnail":src="file.url" alt=""><span class="el-upload-list__item-actions"><spanclass="el-upload-list__item-preview"@click="handlePictureCardPreview(file)"><i class="el-icon-zoom-in"></i></span><spanclass="el-upload-list__item-delete"@click="handleRemove(file)"><i class="el-icon-delete"></i></span></span></div></el-upload></el-form-item></el-form>
  • js主要代码
 data() {return {editForm: {imgList: [],},}
methods: {handleRemove(file) {let arr = this.$refs.upload.uploadFiles// 2.从pics数组中,找到图片对应的索引值let index = arr.indexOf(file)// 3.调用splice方法,移除图片信息arr.splice(index, 1)},handlePictureCardPreview(file) {this.dialogImageUrl = file.url;this.dialogVisible = true;},handlChange(file, fileList) {this.editForm.imgList = fileList;console.log("change",this.editForm.imgList)},submitForm() {let formData = new FormData(); //  用FormData存放上传文件//将图片转为FormData格式
//formData.append() 方法向 FormData 对象添加同一个键(key)的多个值时,
//实际上是在创建一个值的列表,而这个键会与每个添加的值关联起来,
//后端接收到的就是一个Listthis.editForm.imgList.forEach(file => {console.log(file.raw)console.log(file.size)formData.append('files', file.raw)})console.log(formData)//自定义上传axios({method: "post",url: "http://localhost:8089/upload",headers: {'Content-Type': 'multipart/form-data',token: localStorage.getItem('logintoken')},data:formData// traditional: true,}).then(function (res){// console.log(res)return res;});//相当于function(res){ret   
}
  • SpringBoot后端代码

@RestController
@CrossOrigin
public class ManageController {@Value("${saveimg.location.attractions}")String attractionLocation;@RequestMapping(value = "upload")public void uploadImg(@RequestParam("files") List<MultipartFile> files){System.out.println("files = " + files);for (MultipartFile file : files) {if (!file.isEmpty()) {try {// 构建真实的文件路径Path path = Paths.get(attractionLocation + file.getOriginalFilename());// 确保目录路径存在Files.createDirectories(path.getParent());// 将上传文件保存到指定位置file.transferTo(path);// 或者使用这种方式// byte[] bytes = file.getBytes();// Files.write(path, bytes);System.out.println("保存成功");} catch (IOException e) {e.printStackTrace();System.out.println( "上传失败");}}else {System.out.println("失败");}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/11474.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

MATLAB 自定义中值滤波(54)

MATLAB 自定义中值滤波(54) 一、算法介绍二、算法实现1.原理2.代码一、算法介绍 中值滤波,是一种常见的点云平滑算法,改善原始点云的数据质量问题,MATLAB自带的工具似乎不太友好,这里提供自定义实现的点云中值滤波算法,具体效果如下所示: 中值滤波前: 中值滤波后:…

使用 PyOpenGL 进行 2D 图形渲染总结

一、说明 OpenGL是一个广泛使用的开放式跨平台实时 3D 图形库&#xff0c;开发于二十多年前。它提供了一个低级API&#xff0c;允许开发人员以统一的方式访问图形硬件。在开发需要硬件加速且需要在不同平台上运行的复杂 2D 或 3D 应用程序时&#xff0c;它是首选平台。它可以在…

WEB安全测试通常要考虑的测试点

1、问题&#xff1a;没有被验证的输入 测试方法&#xff1a; 数据类型&#xff08;字符串&#xff0c;整型&#xff0c;实数&#xff0c;等&#xff09; 允许的字符集 最小和最大的长度 是否允许空输入 参数是否是必须的 重复是否允许 数值范围 特定的值&#xff08;枚举型&a…

WIFI驱动移植实验:WIFI从路由器动态获取IP地址与联网

一. 简介 前面两篇文章&#xff0c;一篇文章实现了WIFI联网前要做的工作&#xff0c;另一篇文章配置了WIFI配置文件&#xff0c;进行了WIFI热点的连接。文章如下&#xff1a; WIFI驱动移植实验&#xff1a;WIFI 联网前的工作-CSDN博客 WIFI驱动移植实验&#xff1a;连接WIF…

路径规划——搜索算法详解(五):Dynamic A Star(D*)算法详解与Matlab代码

昨天休息了一天&#xff0c;今天继续学习搜索算法&#xff01;前几天已经分别介绍了Dijkstra算法、Floyd算法、RRT算法、A*算法&#xff0c;无独有偶&#xff0c;上述算法都只适用于静态环境下两点规划的场景&#xff0c;但是大部分场景是实时变化的&#xff0c;这对规划算法提…

【中文视觉语言模型+本地部署 】23.08 阿里Qwen-VL:能对图片理解、定位物体、读取文字的视觉语言模型 (推理最低12G显存+)

项目主页&#xff1a;https://github.com/QwenLM/Qwen-VL 通义前问网页在线使用——&#xff08;文本问答&#xff0c;图片理解&#xff0c;文档解析&#xff09;&#xff1a;https://tongyi.aliyun.com/qianwen/ 论文v3. : 一个全能的视觉语言模型 23.10 Qwen-VL: A Versatile…