Vue+Element+Springboot实现图片上传

最近没事刚好练习下vue+springboot前段后分离的项目、用上了图片上传功能、记录一下。

前端待提交的表单部分代码

<el-form-item label="封面图片"><el-upload v-model="dataForm.title"class="avatar-uploader":limit="1"list-type="picture-card":on-preview="handlePictureCardPreview"multiple:http-request="uploadFile":on-remove="handleRemove":on-change='changeUpload':file-list="images"><i class="el-icon-plus"></i></el-upload></el-form-item>
复制代码

el-upload里面的元素解释:

on-preview:点击文件列表中已上传的文件时的事件

on-remove:删除文件时候调用的方法

on-change:文件状态改变时的事件,添加文件、上传成功和上传失败时都会被调用

file-list:上传的文件列表或者默认回显的数据展示渲染

retrun和data

return {images: [{name: 'food.jpg', url: 'https://img-blog.csdnimg.cn/20210329194832973.png'}],imageUrl: '',fileList: [],  // 文件上传数据(多文件合一)dialogImageUrl: '',dialogVisible: false,options: [],content: '',editorOption: {},visible: false,dataForm: {id: 0,title: '',content: '',bz: ''},tempKey: -666666 // 临时key, 用于解决tree半选中状态项不能传给后台接口问题. # 待优化}
复制代码

预览图片和上传图片以及删除图片

changeUpload: function(file, fileList) {//预览图片this.fileList = fileList;},uploadFile(file){},handleRemove(file, fileList) {},handlePictureCardPreview(file) {this.dialogImageUrl = file.url;this.dialogVisible = true;},       
复制代码

这里我是用fomrData对象进行提交的、因为只需要上传一张单张封面图片、还有添加其他的一些表单内容进去

// 表单提交dataFormSubmit () {const form = new FormData()// FormData 对象form.append('file', this.fileList);form.append('title', this.dataForm.title);form.append('content', this.$refs.text.value);this.$refs['dataForm'].validate((valid) => {if (valid) {this.$http({url: this.$http.adornUrl(`/sys/inform/${!this.dataForm.id ? 'save' : 'update'}`),method: 'post',data: form}).then(({data}) => {if (data && data.code === 0) {this.$message({message: '操作成功',type: 'success',duration: 1500,onClose: () => {this.visible = falsethis.$emit('refreshDataList')}})} else {this.$message.error(data.msg)}})}})}
复制代码

后台的话通过HttpServletRequest request--WebUtils .getNativeRequest(request, MultipartHttpServletRequest.class)来获取文件请求并解析文件到服务器或本地

/*** @author lyy* 保存  PC-后台上传文件*/
@RequestMapping(value = "sys/file/save", method = {RequestMethod.POST, RequestMethod.GET})
@Transactional
public R save(HttpServletRequest request) {String classify = request.getParameter("classify");MultipartHttpServletRequest multipartRequest = WebUtils.getNativeRequest(request, MultipartHttpServletRequest.class);String fileName = "";if (multipartRequest != null) {Iterator<String> names = multipartRequest.getFileNames();while (names.hasNext()) {List<MultipartFile> files = multipartRequest.getFiles(names.next());if (files != null && files.size() > 0) {for (MultipartFile file : files) {fileName = file.getOriginalFilename();String SUFFIX = FileUtil.getFileExt(fileName);File uFile = new File();uFile.setFileName(fileName);uFile.setClassify(classify);uFile.setCreateTime(new Date());uFile.setFileType(SUFFIX);String uuid = FileUtil.uuid();try {uFile.setPath(uploadFile(uuid,file) +uuid+"."+SUFFIX);} catch (IOException e) {e.printStackTrace();}fileService.save(uFile);}}}}return R.ok();
}
复制代码

上传文件到本地的静态方法

 /*** 上传文件*@author lyy* @param file* @return* @throws IOException* @throws IllegalStateException*/public static String uploadFile(String uuid, MultipartFile file) throws IllegalStateException, IOException {String defaultUrl = MyFileConfig.getFilePath();String Directory = java.io.File.separator ;String realUrl = defaultUrl + Directory;java.io.File realFile = new  java.io.File(realUrl);if (!realFile.exists() && !realFile.isDirectory()) {realFile.mkdirs();}String fullFile = realUrl + uuid + "."+FileUtil.getFileExt(file.getOriginalFilename());file.transferTo(new java.io. File(fullFile));String relativePlanUrl = Directory;return relativePlanUrl.replaceAll("\\", "/");}

精彩源码推荐:

 大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻微信公众号获取联系方式👇🏻👇🏻👇🏻

打卡 文章 更新 108/  365天

 精彩专栏推荐:下方专栏👇🏻👇🏻👇🏻👇🏻

java项目精品实战案例《100套》https://blog.csdn.net/weixin_39709134/category_11128297.htmlhttps://blog.csdn.net/weixin_39709134/category_11128297.htmlweb前端期末大作业网页实战《100套》https://blog.csdn.net/weixin_39709134/category_11374891.htmlhttps://blog.csdn.net/weixin_39709134/category_11374891.html 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机命令秒退,Win10专业版下ping命令闪退自动关闭的解决办法

Ping是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议&#xff0c;是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通&#xff0c;可以很好地帮助我们分析和判定网络故障。应用格式&#xff1a;Ping空格IP地址。该命令还可以加许多参数使用&#xf…

Linux启动tomcat命令行关闭后服务会停止

最近因为项目需要迁移到云服务器上、自己一个开发还要兼顾运维的事情真是太难了、由于不熟悉、遇到一些各种各样的小坑、在此记录一下。 问题&#xff1a;Linux启动tomcat命令行关闭后服务会停止&#xff1f; 一般Linux下tomcat服务的启动都是直接切换到 apache-tomcat-8.5.73/…

计算机图案填充的两种方法,计算机图形学课件 第9讲 区域填充和字符处理.ppt...

计算机图形学课件 第9讲 区域填充和字符处理信息科学与工程学院 1999年7月 5.4.1 多边形的扫描转换 多边形的两种表示方法&#xff1a; 顶点表示&#xff1a;用多边形的顶点序列来刻划多边形。直观、几何意义强、占内存少&#xff1b;不能直接用于面着色。 点阵表示是用位于多边…

sql server 2008表中计算机,电脑删除SQLsever2008表格数据出现“不能删除”怎么办

SQLsever2008专门用于大批量的数据存储和管理,适合服务器数据管理&#xff0c;电脑在编辑或删除总会出现一些故障问题。这不一些用户说电脑删除SQLsever2008表格数据出现“不能删除”遭到阻止&#xff0c;怎么办&#xff1f;不要紧张&#xff0c;参考下文教程设置一下即可。具体…

@JsonFormat(pattern=“yyyy-MM-dd“)时间差问题

原因&#xff1a;JsonFormat(pattern"yyyy-MM-dd"&#xff09;时间差问题 解释&#xff1a;默认情况下timeZone为GMT&#xff08;即标准时区&#xff09;&#xff0c;而北京是在东八区&#xff0c;所以会造成差8小时。 解决方法&#xff1a;加上timezone "GMT8…

酒店三合一终端服务器,【MOXA NPort6650-8八口三合一信号安全终端服务器价格_MOXA NPort6650-8八口三合一信号安全终端服务器厂家】- 网络114...

简介NPort 6600专为那些需要通过网络实现集中监控的串口设备而设计。目前已经推出8/16/32串口终端服务器。一旦大量 串口设备接入以太网络时&#xff0c;数据传输的安全性就变的十分重要。NPort 6600为计算机和串口设备之间的通信提供了功能强大的加密机制&#xff0c;如当今的…

‘cnpm‘ 不是内部或外部命令,也不是可运行的程序

​ npm install -g cnpm --registryhttps://registry.npm.taobao.org ​

js文件夹上传到服务器,js 上传img到服务器

jQuery插件之ajaxFileUpload前端视图&#xff0c;HTML与JS代码&#xff0c;成功上传后&#xff0c;返回图片真实地址并绑定到的SRC地址lt;head>lt;script src"/jquery-1.7.1.js"type"text/javascript">lt;script>lt;script src"/...文章wenv…

Linux后台运行jar报错:nohup: ignoring input and redirecting stderr to stdout

解决方法&#xff1a; 执行&#xff1a;nohup java -jar kaoqin20210327.jar >nohup.out 2>&1 &

基于java+Springboot操作系统教学交流平台详细设计实现

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &#x1f345;文末获取源码联系&#x1f345; 功能设计和技术&#x…

只在当前页面生效的css样式,修改页面中的一个样式 仅在当前页面生效

问题描述校验的提示框出现在其他位置 怎么修改问题出现的环境背景及自己尝试过哪些方法尝试直接修改 样式 会修改掉全局的样式 怎么让这个样式仅在当前页面生效相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码):rules"[ {required: true,validator:isContainerQtyE…

程序员也可以很浪漫--精选10个圣诞节特效网页设计-前端HTML+CSS等实现

最近离圣诞节不远了、整理了一些关于圣诞相关的前端特效网页设计和小游戏的代码送大家、直接上效果吧。 视频演示&#xff1a;点击查看完整视频演示 》》》 html5基于svg绘制调皮圣诞老人&#xff1a; <![CDATA[import url(https://fonts.googleapis.com/css?familyLuckies…

css动画改变高度有过渡效果,css3-形变、过渡、动画

一、2D形变平移transform:translate(x&#xff0c;y)相对当前位置&#xff0c;向左移动x像素&#xff0c;像下移动y像素transform:translateX(num)相对当前位置&#xff0c;向左移动num像素transform:translateY(num)相对当前位置&#xff0c;向下移动num像素缩放transform:sca…

Web前端期末大作业--零食商城网页设计(HTML+CSS+JavaScript+)实现

临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大&#xff1f;网页要求的总数量太多&#xff1f;HTML网页作业无从下手&#xff1f;没有合适的模板&#xff1f;等等一系列问题。你想要解决的问题&#xff0c;在专栏&#x1f447;&#x1f3fb;&#x1f447;&…

css3 z-index,z-index的工作原理

可能并不是那么显而易见&#xff0c;但是HTML文档中的元素却是存在于三个维度之中。除了大家熟知的平面画布中的x轴和y轴&#xff0c;还有控制第三维度的z轴。像 margin , float , offset 这些属性&#xff0c;控制着元素在x轴和y轴上的表现形式一样。 z-index 这个属性控制着元…

【CSDN】-京东云部署java项目及性能测试

前言&#xff1a; 最近因为华为云服务器购买过期了&#xff0c;其实本来自己的个人项目部署或不部署到服务器都是可以的、但最近刚好看见京东云服务器在做活动、就想着搞一搞。刚好官方送了我一张代金券。那我就直接用起来吧。 个人需求 因为个人需求、我选择了一个的是2核/内存…

typecho模板ajax,typecho ajax登陆

typecho ajax登陆 反回responseText返回的为html代码&#xff01;帐户密码为admin/123456$.ajax({url: "<?php $this->options->loginAction(); ?>",data:{name:admin,password:123456},type: "POST",dataType:json,success:function(data){…

SpringBoot vue图片上传不能立即回显问题解决

最开始项目是放在eclipse之中的、springboot项目默认把静态的文件加载到classpath的目录下的。而此时我们上传的图片并没有传入启动了的项目当中去、所以明明路径是对的、却访问不了、在项目重新启动之后项目会打成新的jar包、这个时候上一次上传的图片才会正常显示。 解决方法…

IDEA中运行springboot+vue项目设置terminal路径

File->settings->Tools->terminal 设置后刷新IDEA即可生效。

win8服务器无法安装win7系统安装,win8怎么安装win7 win8改win7教程详解【图文】

继win7系统后&#xff0c;微软又推出了win8、win8.1以及win10系统&#xff0c;每个系统在原来的版本上都有了更改和创新。大家都知道&#xff0c;人是一种容易习惯的动物。很多人在使用了win7之后&#xff0c;更换到win8系统会很不习惯、觉得win8无法与win7比拟&#xff0c;这种…