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 相关文章推荐
SUN的《AJAX与J2EE》全文译了
Feb 23 Javascript
符合标准的js表单提交的代码
Sep 13 Javascript
javascript encodeURI和encodeURIComponent的比较
Apr 03 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
Jun 14 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
Apr 17 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
May 20 Javascript
jquery用data方法获取某个元素上的事件
Jun 23 Javascript
angularjs学习笔记之简单介绍
Sep 26 Javascript
js实现上一页下一页的效果【附代码】
Mar 10 Javascript
Javascript 之封装(Package)
Sep 14 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
Oct 10 Javascript
浅谈JavaScript节流和防抖函数
Aug 25 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
PHP实现恶意DDOS攻击避免带宽占用问题方法
2015/05/27 PHP
PHP数组操作简单案例分析
2016/10/15 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
laravel5.1 ajax post 传值_token示例
2019/10/24 PHP
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
javascript各浏览器中option元素的表现差异
2011/04/07 Javascript
Jquery实现三层遍历删除功能代码
2013/04/23 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
JavaScript原生对象之Number对象的属性和方法详解
2015/03/13 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
js实现4个方向滚动的球
2017/03/06 Javascript
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
vue中使用input[type=&quot;file&quot;]实现文件上传功能
2018/09/10 Javascript
微信小程序之事件交互操作实例分析
2018/12/03 Javascript
React 实现拖拽功能的示例代码
2019/01/06 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
JS中箭头函数与this的写法和理解
2021/01/14 Javascript
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
python3.6的venv模块使用详解
2018/08/01 Python
Python爬取qq空间说说的实例代码
2018/08/17 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
解决Pycharm下面出现No R interpreter defined的问题
2018/10/29 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
2020/04/14 Python
浅析Python的命名空间与作用域
2020/11/25 Python
python通过cython加密代码
2020/12/11 Python
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
师范生自荐信模板
2014/05/28 职场文书
欢度春节标语
2014/07/01 职场文书
化工见习报告范文
2014/10/31 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
公司副总经理岗位职责
2015/04/08 职场文书