Springboot+Vue实现将图片和表单一起提交到后端,同时将图片地址保存到数据库、再次将存储的图片展示到前端vue页面
文章目录
1、实现的效果


2、Vue前端
<!-- ==================================增加汽车==========================================-->
<el-dialog
title="添加汽车"
:visible.sync="adddialogVisible"
width="30%"
:close-on-click-modal="false">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" style="width: 60%" label-width="100px" class="demo-ruleForm">
<el-form-item label="汽车押金" prop="guarantee_money">
<el-input v-model="ruleForm.guarantee_money" placeholder="请输入汽车押金"></el-input>
</el-form-item>
<el-form-item label="上传图片" prop="imageUrl">
<el-upload
class="avatar-uploader"
action="http://localhost:8282/upload/img"
:show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload">
<img v-if="imageUrl!=''" :src="data:imageUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon">上传图片</i>
</el-upload>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="resetForm('ruleForm')">重置</el-button>
<el-button @click="adddialogVisible = false">取 消</el-button>
<el-button type="primary" @click="submitForm('ruleForm')">确 定</el-button>
</span>
</el-dialog>
3、图片上传
重点部分:==

4、字段变量根据自己的字段名自行设置(这里不给出了,哈哈哈)
5、method方法
5.1、图片显示在选择框中,同时返回后端存储的地址
//图片回显
handleAvatarSuccess(res, file) {
console.log(res)
this.imageUrl = res.data.final_fileName
sessionStorage.setItem("imgUrl",this.imageUrl)
alert(this.imageUrl)
},
//图片上传大小限制
beforeAvatarUpload(file) {
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isLt2M) {
this.$message.error('上传头像图片大小不能超过 2MB!');
}
return isLt2M;
},
解释:

5.2查看后端返回给前端的图片地址

5.3 提交表单数据到后端
//提交表单
submitForm() {
let _this = this;
_this.ruleForm.imageUrl =sessionStorage.getItem("imgUrl")
axios.post('/car/addcar',this.ruleForm).then(resp => {
if(resp.data.code==200){
_this.$alert('《'+_this.ruleForm.name+'》添加成功', '消息', {
confirmButtonText: '确定',
callback: action => {
_this.adddialogVisible=false
_this.showAllUsers();
}
});
}
});
},
6、后端的配置
6.1、处理前端传输过来的图片、将图片地址返回给前端
@Value("${pictureFile.path}")
private String picturePath;
@Value("${pictureFile.path-mapping}")
private String picturePath_mapping;
//这个写在了配置文件中
@PostMapping("/upload/img")
public Result upload(MultipartFile file) {
String fileName = file.getOriginalFilename(); // 文件名
String suffixName = fileName.substring(fileName.lastIndexOf(".")); // 后缀名
fileName = UUIDutilsu.getUUID() + suffixName; // 新文件名
File dest = new File(picturePath + fileName);
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
try {
file.transferTo(dest);
} catch (IOException e) {
e.printStackTrace();
}
String final_fileName = "http://localhost:8282" + picturePath_mapping + fileName;
System.out.println(final_fileName);
return Result.ok().data("final_fileName",final_fileName);
}
讲解:UUIDutilsu.getUUID()是我写的一个UUID的工具类。Result.ok().data("final_fileName",final_fileName);是统一返回给前端的数据格式。如上图所示。Result是我封装好的统一返回给前端数据的字段。这里可以直接返回String类型的字符串
6.2、application.yml文件中
pictureFile:
path: "G:/BISHE/upload/"
path-mapping: "/myImg/"
resources:
static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${pictureFile.path-mapping}
6.3、这个重点配置
@Configuration
public class URLConfig implements WebMvcConfigurer {
@org.springframework.beans.factory.annotation.Value("${pictureFile.path}")
private String picturePath;
@Value("${pictureFile.path-mapping}")
private String picturePath_mapping;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler(picturePath_mapping+"**").addResourceLocations("file:"+picturePath);
}
}
7、添加商品的接口(使用了swagger)
@ApiOperation(value = "添加汽车", notes = "添加汽车")
@ApiImplicitParams({
@ApiImplicitParam(name = "Car")
})
@RequestMapping(value = "/car/addcar", method = RequestMethod.POST)
public Result addCar(@RequestBody Car car) {
car.setStatus(1);//新增加的商品默认是上架商品
String date = CurrentTime.getCurrentTime();
car.setDate(date);
int rs = carService.addCar(car);
if (rs > 0) {
return Result.ok();
} else {
throw new BusinessException(ResultCode.ADD_CAR_ERROR.getCode(),
ResultCode.ADD_CAR_ERROR.getMessage());
}
}
Springboot+Vue实现将图片和表单一起提交到后端,同时将图片地址保存到数据库、再次将存储的图片展示到前端vue页面的更多相关文章
- layui 图片与表单一起提交 + layer.photos图片层预览
HTML基本结构: <form class="layui-form" action="" id="feedBackForm"> ...
- el-upload上传文件和表单一起提交+后端接收代码
目录 一.前言 二.前端页面展示 三.表单代码 四.Data部分 五.JS方法 六.后端接收方式 七.总结 一.前言 我们在做前端时,会遇到这样的需求,上传Excel文件,并且还要和填写的表单数据,一 ...
- springboot——重定向解决刷新浏览器造成表单重复提交的问题(超详细)
原因:造成表单重复提交的原因是当我们刷新浏览器的时候,浏览器会发送上一次提交的请求.由于上一次提交的请求方式为post,刷新浏览器就会重新发送这个post请求,造成表单重复提交. 解决办法: 将请求当 ...
- django websocket 实现后台日志在web端展示(+前端vue设置)
核心代码: @accept_websocket def get_log(req): if req.is_websocket(): print('收到websocket请求') with open(se ...
- puzz: 图片和表单上传的不一致问题
1. 方向1 用户提交表单, 图片和表单同步上传.(由同一服务器处理, 服务器压力大. 没有分离) 2. 方向2 图片和表单分开上传. 如图片访问ftp,表单提交后台(图片和后台分离) 2 ...
- Token防止表单重复提交和CSRF攻击
Token,可以翻译成标记!最大的特点就是随机性,不可预测,一般黑客或软件无法猜测出来. Token一般用在两个地方: 1: 防止表单重复提交 2: anti csrf攻击(Cross-site re ...
- java web解决表单重复提交问题
我们大家再进行web开发的时候,必不可少会遇见表单重复提交问题.今天就来给总结如何解决表单提交问题,欢迎大家交流指正. 首先我们在讨论如何解决表单重复提交问题之前先来解决三个问题:1.什么叫表单重复提 ...
- java web解决表单重复提交
首先我们在讨论如何解决表单重复提交问题之前先来解决三个问题:1.什么叫表单重复提交?2.什么情况下会出现表单重复提交?3.什么情况需要避免表单重复提交? 什么叫表单提交问题,说白了,就是同一份信息,重 ...
- MVC下form表单一次上传多种类型的图片(每种类型的图片可以上传多张)
form表单一次上传多种类型的图片(每种类型的图片可以上传多张) controller中的action方法 public ActionResult UploadImage( ) { in ...
随机推荐
- 技术分析 | 浅谈在MySQL体系下SQL语句是如何在系统中执行的及可能遇到的问题
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 SQL语句大家并不陌生,但某种程度上来看,我们只是知道了这条语句是什么功能,它可 ...
- codeforces600E Lomsat gelral【线段树合并/DSU】
第一次AC这道题,是三年前的一个下午,也许晚上也说不定.当时使用的\(DSU\) \(on\) \(tree\)算法,如今已经淡忘,再学习新的算法过程中,却与旧物重逢.生活中充满不可知会的相遇,即使重 ...
- Docker与GU 安装管理配置
Linux 下的 Docker 安装与使用 一.安装与配置 1.安装依赖包 1 sudo yum install -y yum-utils device-mapper-persistent-data ...
- 2022-08-15 - 初识MySQL
MySQL数据库 数据库 数据库,又称为Database,简称DB.数据库就是一个文件集合. 顾名思义:是一个存储数据的仓库,实际上就是一堆文件,这些文件中存储了具有特定格式的数据,可以很方便的对里面 ...
- 数据库简介与MySQL简介
MySQL简介 数据存取演变史 起源······文本文件 在最开始使用计算机都没有相应的规范我们的数据一般都是自己起一个名字然后就根据这个路径存储数据并且存储数据的格式也都五花八门就产生了很多奇奇怪怪 ...
- No value specified for parameter 5异常
No value specified for parameter 5 翻译:没有为参数5指定值 在sql语句中,有5个" ? "号,但是赋值的时候只赋了前面4个" ?&q ...
- CF-D. Another Problem About Dividing Numbers
Problem - D - Codeforces 题意:问能否在进行K次操作的情况下,将两个数变得相同,操作为每次选择一因子,然后除该因子. 题解:要判断该数最多能进行几次除的操作,其实就是判断这个数 ...
- 《Java编程思想》读书笔记(四)
前言:三年之前就买了<Java编程思想>这本书,但是到现在为止都还没有好好看过这本书,这次希望能够坚持通读完整本书并整理好自己的读书笔记,上一篇文章是记录的第十七章到第十八章的内容,这一次 ...
- KingbaseESV8R6垃圾回收受到参数old_snapshot_threshold的影响
垃圾回收影响因素 影响垃圾回收的因素有很多,垃圾回收不及时,最直接导致表膨胀,详情查看文档<KingbaseESV8R6 垃圾回收原理以及如何预防膨胀>. vacuum回收垃圾的tuple ...
- KingbaseES 参数 - ora_statement_level_rollback
参数 ora_statement_level_rollback 控制KingbaseES 是否实现类似oracle 语句级的回滚.当该参数打开时,如果事务操作失败,仅会回滚最后一条操作,避免了全部操作 ...