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 相关文章推荐
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
Jan 16 Javascript
Some tips of wmi scripting in jscript (1)
Apr 03 Javascript
在jQuery 1.5中使用deferred对象的代码(翻译)
Mar 10 Javascript
基于jquery的无限级联下拉框js插件
Oct 29 Javascript
jQuery中Dom的基本操作小结
Jan 23 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
Aug 26 Javascript
jQuery判断checkbox选中状态
May 12 Javascript
Javascript基础之数组的使用
May 13 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
Sep 05 Javascript
浅谈JavaScript中的属性:如何遍历属性
Sep 14 Javascript
一篇文章,教你学会Vue CLI 插件开发
Apr 17 Javascript
Vue实现开心消消乐游戏算法
Oct 22 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
写一个用户在线显示的程序
2006/10/09 PHP
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
PHP自定义函数实现格式化秒的方法
2016/09/14 PHP
Laravel 连接(Join)示例
2019/10/16 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
javascript 面向对象 function类
2010/05/13 Javascript
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
关于jQuery中的end()使用方法
2011/07/10 Javascript
jquery搜索框效果实现方法
2015/01/16 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
2016/04/01 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
2017/02/22 Javascript
VUE实现一个分页组件的示例
2017/09/13 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
js实现炫酷光感效果
2020/09/05 Javascript
深入理解Python爬虫代理池服务
2018/02/28 Python
用Django实现一个可运行的区块链应用
2018/03/08 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
属性与 @property 方法让你的python更高效
2020/09/21 Python
css3使用animation属性实现炫酷效果(推荐)
2020/02/04 HTML / CSS
阿联酋航空官方网站:Emirates
2017/10/17 全球购物
英国时尚运动品牌的合集:The Sports Edit
2017/12/20 全球购物
瑞士领先的网上超市:LeShop.ch
2018/11/14 全球购物
Linux如何压缩可执行文件
2013/10/21 面试题
通信工程专业女生个人求职信
2013/09/21 职场文书
体育教育毕业生自荐信
2013/11/21 职场文书
大学生党课思想汇报
2013/12/29 职场文书
招聘单位介绍信
2014/01/14 职场文书
2014年基层党组织公开承诺书
2014/03/29 职场文书
公务员政审单位鉴定材料
2014/05/16 职场文书
2014大学生学生会工作总结
2014/12/19 职场文书
Python 一键获取电脑浏览器的账号密码
2022/05/11 Python