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 相关文章推荐
jquery autocomplete自动完成插件的的使用方法
Aug 07 Javascript
小试JQuery的AutoComplete插件
May 04 Javascript
javascript 控制input只允许输入的各种指定内容
Jun 19 Javascript
基于jQuery的图片不完全按比例自动缩小
Jul 11 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
Dec 10 Javascript
jquery中键盘事件小结
Feb 24 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
Dec 01 Javascript
ES6新特性五:Set与Map的数据结构实例分析
Apr 21 Javascript
angular6 填坑之sdk的方法
Dec 27 Javascript
vue数据操作之点击事件实现num加减功能示例
Jan 19 Javascript
微信小程序实现富文本图片宽度自适应的方法
Jan 20 Javascript
微信小程序实现九宫格抽奖
Apr 15 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
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
PHP SPL标准库之SplFixedArray使用实例
2015/05/12 PHP
laravel 时间格式转时间戳的例子
2019/10/11 PHP
网页中实现浏览器的最大,最小化和关闭按钮
2007/03/12 Javascript
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法
2015/08/10 Javascript
关于JavaScript中事件绑定的方法总结
2016/10/26 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
2017/01/08 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
vue axios 二次封装的示例代码
2017/12/08 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
2018/04/01 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
vue调用语音播放的方法
2019/09/27 Javascript
vue+koa2搭建mock数据环境的详细教程
2020/05/18 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
简单的编程0基础下Python入门指引
2015/04/01 Python
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
Python 使用元类type创建类对象常见应用详解
2019/10/17 Python
常用python爬虫库介绍与简要说明
2020/01/25 Python
windows10在visual studio2019下配置使用openCV4.3.0
2020/07/14 Python
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
公司采购主管岗位职责
2014/06/17 职场文书
银行求职自荐信范文
2015/03/04 职场文书
企业党员岗位承诺书
2015/04/27 职场文书
2015年端午节活动方案
2015/05/05 职场文书
通过T-SQL语句创建游标与实现数据库加解密功能
2022/03/16 SQL Server
Python中request的基本使用解决乱码问题
2022/04/12 Python
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android