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 相关文章推荐
2则自己编写的jQuery特效分享
Feb 26 Javascript
Javascript字符串拼接小技巧(推荐)
Jun 02 Javascript
js表单元素checked、radio被选中的几种方法(详解)
Aug 22 Javascript
node.js版本管理工具n无效的原理和解决方法
Nov 24 Javascript
jQuery实现ajax无刷新分页页码控件
Feb 28 Javascript
详解VUE的状态控制与延时加载刷新
Mar 27 Javascript
微信小程序 生命周期函数详解
May 24 Javascript
js实现从左向右滑动式轮播图效果
Jul 07 Javascript
深入了解JavaScript代码覆盖
Jun 13 Javascript
vue 开发之路由配置方法详解
Dec 02 Javascript
JS造成内存泄漏的几种情况实例分析
Mar 02 Javascript
React列表栏及购物车组件使用详解
Jun 28 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类常量的使用详解
2013/06/08 PHP
自己写了一个php检测文件编码的函数
2014/04/21 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
php微信公众号开发之简答题
2018/10/20 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
2009/10/24 Javascript
jquery ui resizable bug解决方法
2010/10/26 Javascript
$.format,jquery.format 使用说明
2011/07/13 Javascript
javascript history对象(历史记录)使用方法(实现浏览器前进后退)
2014/01/07 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
2016/02/14 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
python PyTorch参数初始化和Finetune
2018/02/11 Python
python+opencv识别图片中的圆形
2020/03/25 Python
python中subprocess批量执行linux命令
2018/04/27 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
马来西亚在线购物:POPLOOK.com
2019/12/09 全球购物
文秘专业个人求职信
2013/12/22 职场文书
人事专员的职责
2014/02/26 职场文书
cf收人广告词
2014/03/14 职场文书
家装电话营销开场白
2015/05/29 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书
2016思想纪律作风整顿心得体会
2016/01/23 职场文书
企业管理制度设计时要注意的几种“常见病”!
2019/04/19 职场文书
导游词之南京莫愁湖公园
2019/11/13 职场文书