vue+springboot+element+vue-resource实现文件上传教程


Posted in Javascript onOctober 21, 2020

vue页面设置

<el-upload
       class="upload-demo"
       action=""
       :before-upload="beforeUpload" //上传前操作
       :before-remove="beforeRemove" //移除钱操作
       :multiple="false"  //禁止多选
       :http-request="myUpload" //文件上传,重写文件上传方法,action的路径不会起作用
       accept=".jar"  //限制文件选择类型
       :drag="false"
       :data="param" //参数
       :file-list="fileList">//文件显示列表
       <el-button size="small" type="primary">点击上传</el-button>
       <div slot="tip" class="el-upload__tip">只能上传jar文件,且不超过500kb</div><!-- :headers="head"-->
      </el-upload><!--:on-preview="handlePreview"-->

   /*文件上传前,判断文件名是否存在,等其他处理*/
   beforeUpload(file){
    console.log("文件名",file.name,this.fileList)
    for (let i = 0; i <this.fileList.length ; i++) {
     if (this.fileList[i].name==file.name) {
      this.$message.info("文件已存在");
      return false;
     }
    }
    this.file=file;

    return true;
   },
    /*文件移除前,提示是否删除*/
   beforeRemove(file,fileList){//delJar
    this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
     confirmButtonText: '确定',
     cancelButtonText: '取消',
     type: 'warning'
    }).then(() => {
     this.$http.get('/aaaa/task/del?taskId='+this.taskId+'&name='+file.name).then(function(res) {
      ......
     });
    }).catch(() => {
     this.getJarList();
     return false;
    });
   },
   /*文件上传,重写文件上传方法,action的路径不会起作用*/
   myUpload(file){
    let fd = new FormData();
    fd.append('file',this.file);//传文件
    fd.append('taskId',this.taskId);//传其他参数
    // fd.append('filename',file.name);//传其他参数
    this.$http.post('/aaaa/task/add',fd).then(function(res) {
     ....
    });
   },

fileList一个对象的内容

name:"xxxx.jar"
status:"success"
uid:123456456

参数

this.param={
  taskId:this.taskId
}

springboot设置

1.请求的注解:produces = "multipart/form-data;charset=utf-8", method = RequestMethod.POS

@RequestMapping(value = "/add", produces = "multipart/form-data;charset=utf-8", method = RequestMethod.POST)
  public String addJar(int taskId, HttpServletRequest request) throws IOException, ServletException {
    ....
    //获取文件
    Part part = request.getPart("file");// input的name值
    String dis = part.getHeader("Content-Disposition");
    // 获取文件名--sdsf.jar
    String fna = dis.substring(dis.indexOf("filename=") + 10, dis.length() - 1);
    String fname = fna.substring(fna.lastIndexOf("\\") + 1, fna.length());// 有的浏览器获取的是路径+文件名
    // 若是文件名为空,说明此时没有选择文件,返回,文件上传失败,选择文件
    if (fname.length() < 1) {
     //此时没有选择文件
    }
    ....
  }

补充知识:elementUI upload图片文件上传到指定后端接口解决方法

1. 一般后端提供接口上传文件都有参数。如果我们不传参就会报错或显示图片不存在,上传失败。所以我们要参考他的文档。action 是上传路径; ==name== 就是传参的属性(关键)。

vue+springboot+element+vue-resource实现文件上传教程

imageUrl: '',

<el-form-item label="封面图片" :required="true">
  <el-upload class="avatar-uploader" action="http://xxx.cn/xx/file/uploadImg/" name='photo' :show-file-list="false"
   :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
   <img v-if="imageUrl" :src="imageUrl" class="avatar">
   <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  </el-upload>
</el-form-item>
handleAvatarSuccess(res, file) {
    console.log(res)
    console.log(file)
    this.imageUrl = URL.createObjectURL(file.raw);
    console.log(this.imageUrl)
   },
   //验证图片格式
   beforeAvatarUpload(file) {
    const isJPG = file.type === 'image/jpeg';
    const isLt2M = file.size / 1024 / 1024 < 2;

    if (!isJPG) {
     this.$message.error('上传头像图片只能是 JPG 格式!');
    }
    if (!isLt2M) {
     this.$message.error('上传头像图片大小不能超过 2MB!');
    }
    return isJPG && isLt2M;
   },

css代码

/* 图片上传css */
 .avatar-uploader /deep/.el-upload {
  border: 1px dashed #d9d9d9;
  border-radius: 6px;
  cursor: pointer;
  position: relative;
  overflow: hidden;
 }

 .avatar-uploader .el-upload:hover {
  border-color: #409EFF;
 }

 .avatar-uploader-icon {
  font-size: 28px;
  color: #8c939d;
  width: 100px;
  height: 100px;
  line-height: 100px;
  text-align: center;
 }
 .avatar {
  width: 100px;
  height: 100px;
  display: block;
 }

参考elementUI文档:https://element.eleme.cn/#/zh-CN/component/upload

以上这篇vue+springboot+element+vue-resource实现文件上传教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
通过ifame指向的页面高度调整iframe的高度
Oct 05 Javascript
jQuery 1.4 15个你应该知道的新特性(译)
Jan 24 Javascript
浅析js设置控件的readonly与enabled属性问题
Dec 25 Javascript
JavaScript在IE和FF下的兼容性问题
May 19 Javascript
Vue中v-for的数据分组实例
Mar 07 Javascript
vue.js响应式原理解析与实现
Jun 22 Javascript
Javascript 之封装(Package)
Sep 14 Javascript
详解Puppeteer前端自动化测试实践
Feb 21 Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
May 14 Javascript
JavaScript实现单英文金山打字通
Jul 24 Javascript
jquery向后台提交数组的代码分析
Feb 20 jQuery
详解vue 组件注册
Nov 20 Vue.js
原生小程序封装跑马灯效果
Oct 21 #Javascript
uniapp实现横向滚动选择日期
Oct 21 #Javascript
实现vuex原理的示例
Oct 21 #Javascript
详解JavaScript类型判断的四种方法
Oct 21 #Javascript
node.js如何根据URL返回指定的图片详解
Oct 21 #Javascript
vue中template的三种写法示例
Oct 21 #Javascript
Vue使用v-viewer实现图片预览
Oct 21 #Javascript
You might like
php网页病毒清除类
2014/12/08 PHP
PHP模板解析类实例
2015/07/09 PHP
php集成开发环境详解
2019/09/24 PHP
解决 FireFox 下[使用event很麻烦] 的问题.
2006/08/22 Javascript
JavaScript Archive Network 集合
2007/05/12 Javascript
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
jQuery继承extend用法详解
2016/10/10 Javascript
详解javascript事件绑定使用方法
2016/10/20 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
jQuery日期范围选择器附源码下载
2017/05/23 jQuery
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
浅谈对Angular中的生命周期钩子的理解
2017/07/31 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
微信小程序云开发如何使用npm安装依赖
2019/05/18 Javascript
小程序实现搜索框
2020/06/19 Javascript
微信小程序之数据绑定原理解析
2019/08/14 Javascript
layui监听select变化,以及设置radio选中的方法
2019/09/24 Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
2020/03/03 Javascript
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
2017/07/24 Python
Python魔法方法详解
2019/02/13 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
Django中从mysql数据库中获取数据传到echarts方式
2020/04/07 Python
Bonami斯洛伐克:购买家具和家居饰品
2019/07/02 全球购物
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
养殖人员的创业计划书范文
2013/12/26 职场文书
学习2014年全国两会心得体会
2014/03/12 职场文书
关于青春的演讲稿
2014/05/05 职场文书
农业开发项目建议书
2014/05/16 职场文书
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python
SQL实现LeetCode(176.第二高薪水)
2021/08/04 MySQL
聊聊SpringBoot自动装配的魔力
2021/11/17 Java/Android
MySQL数据库完全卸载的方法
2022/03/03 MySQL