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 相关文章推荐
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
Oct 01 Javascript
JS启动应用程序的一个简单例子
May 11 Javascript
javascript 常用方法总结
Jun 03 Javascript
javascript深入理解js闭包
Jul 03 Javascript
jquery的index方法实现tab效果
Feb 16 Javascript
jQuery控制网页打印指定区域的方法
Apr 07 Javascript
JQuery分屏指示器图片轮换效果实例
May 21 Javascript
JS实现动态增加和删除li标签行的实例代码
Oct 16 Javascript
js简易版购物车功能
Jun 17 Javascript
angular.js中解决跨域问题的三种方式
Jul 12 Javascript
ReactNative中使用Redux架构总结
Dec 15 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
Sep 14 Javascript
原生小程序封装跑马灯效果
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基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2014/06/19 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
PHP设计模式之适配器模式定义与用法详解
2018/04/03 PHP
JQuery 弹出框定位实现方法
2010/12/02 Javascript
js jquery获取随机生成id的服务器控件的三种方法
2013/07/11 Javascript
jquery选择器原理介绍($()使用方法)
2014/03/25 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
Vue中的v-cloak使用解读
2017/03/27 Javascript
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
2018/10/12 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
JavaScript将数组转换为链表的方法
2020/02/16 Javascript
python基础教程之元组操作使用详解
2014/03/25 Python
python面向对象_详谈类的继承与方法的重载
2017/06/07 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
Django中自定义模型管理器(Manager)及方法
2019/09/23 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
美国领先的机场停车聚合商:Airport Parking Reservations
2020/02/28 全球购物
怎样声明一个匿名的内部类
2016/06/01 面试题
办公室经理岗位职责
2014/01/01 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
i7 6700处理器相当于i5几代
2022/04/19 数码科技
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS