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中常见陷阱小结
Apr 27 Javascript
javascript实现的网站访问量统计代码
Dec 20 Javascript
分享javascript计算时间差的示例代码
Mar 19 Javascript
jQuery文字横向滚动效果的实现代码
May 31 Javascript
JS实现的手机端精简幻灯片效果
Sep 05 Javascript
switch语句的妙用(必看篇)
Oct 03 Javascript
bootstrap手风琴折叠示例代码分享
May 22 Javascript
javascript获取指定区间范围随机数的方法
Sep 08 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
Mar 08 Javascript
vue 中的keep-alive实例代码
Jul 20 Javascript
JS实现从对象获取对象中单个键值的方法示例
Jun 05 Javascript
关于微信小程序map组件z-index的层级问题分析
Jul 09 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 压缩文件夹的类代码
2009/11/05 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
PHP7如何开启Opcode打造强悍性能详解
2018/05/11 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
2019/02/16 PHP
对YUI扩展的Gird组件 Part-1
2007/03/10 Javascript
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
javascript中简单的进制转换代码实例
2013/10/26 Javascript
NodeJS制作爬虫全过程
2014/12/22 NodeJs
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
Vue.js 2.0中select级联下拉框实例
2017/03/06 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
Javascript Promise用法详解
2018/05/10 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
2019/08/06 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
python实现的简单RPG游戏流程实例
2015/06/28 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
Python字符串、列表、元组、字典、集合的补充实例详解
2019/12/20 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
2020/05/25 Python
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
机关党员公开承诺书
2014/08/30 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
教师党员自我评价范文
2015/03/04 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript
解析MySQL索引的作用
2022/03/03 MySQL
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB
Python实现信息管理系统
2022/06/05 Python