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,一经查实,立即删除!

相关文章

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

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

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

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

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…

基于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核/内存…

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;这种…

【PAG组件】-从解码渲染层面对比 PAG 与 lottie

从解码渲染层面对比 PAG 与 lottie 最近由于业务需求&#xff0c;需要调研一下业界的知名动画渲染框架。经过一些时间的调研与探索&#xff0c;我将目光聚焦在两款不错的动画框架上。一款是知名的 lottie&#xff0c;一款是腾讯出品的 PAG。 lottie 相信大部分端上的研发都会…

电脑预览,电脑怎么预览psd格式?

经常使用PS的朋友们都知道Photoshop文档的默认格式是psd格式&#xff0c;可是在电脑上可能不能像jpg图片一样显示缩略图预览。遇到这种情况我们该怎么办?要是电脑上并没有安装PS软件又该怎么预览?下面我们就一起来看看哪些解决方法。步骤如下:方法一:有安装PS&#xff0c;使用…

一个二线城市程序员的一年【坐标成都】

前言&#xff1a; 好快呀&#xff01;不知不觉一年又快过去了。总的来说还算丰收的一年吧。从毕业之后就一直在成都工作、对于最开始其实并没有特别清晰的职业规划。我还记得面试时面试官经常问到一句话是什么。你为啥选择我们公司&#xff1f;我记得当时回答好像是就说工作岗位…

Web前端期末大作业--汽车主题网页设计002(HTML+CSS+JavaScript+)实现

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

速达财务3000服务器账套维护显示,速达3000财务软件使用常见问题

一.安装好速达3000XP网络版客户端后,运行客户端时出现一闪而过?答:如客户端一闪而过,请将速达3000XP服务器的系统日志清空,然后将服务器重启,如不行,需将数据做好备份,然后将服务器端的INTERBASE服务器卸载,重新安装.二.速达3000XP,在创建帐套过程中设置了"帐务系统与进销…

基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现

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

基于前端HTML+CSS+JS实现2022城市新年贺卡特效

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