现在谈一下elelmentui中使用Upload 上传通过点击或者拖拽上传文件(图片)

<el-upload
  name="multfile"    //上传的文件字段名
  class="avatar-uploader"
  :action="updateUrl"   //必选参数,上传的地址,即接口地址
  :data="itemForm"   //上传时附带的额外参数
  :before-upload="beforeAvatarUpload"   //上传文件之前的钩子,参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传。
  :on-success="handleAvatarSuccess"   //文件上传成功时的钩子函数
  ref="newupload"
>
  <el-button
    slot="trigger"
    size="small"
    icon="el-icon-upload"
    style="margin-top: 20px;"
  >选择上传文件
  </el-button>
  <div slot="tip" class="el-upload__tip">
     只能上传jpg/png文件,且不超过500kb
   </div>
</el-upload>
 
<el-button type="primary" size="small" @click="submitBtn" style="width: 124px;"
>提 交</el-button>
 
 
script中:
  

data() {
  return {
    itemForm: {
    //编辑时数据
      token: sessionStorage.getItem('loginToken'),
      id: 0,
      user_name: '',
      user_nike_name: '',
      user_sex: 1, //默认 1男 0女
      user_phone: '',
      user_email: '',
      head_img: ''
    },
    fd: '', //向服务器进行传递的参数(带有图片formdata)
    updateUrl: this.serverUrl + '/userInfo/update'
  }
},
methods:{
  //成功时保存一下后台给你返回的图片,可以渲染到页面上

  handleAvatarSuccess(res, file) {
    this.itemForm.head_img = URL.createObjectURL(file.raw)
  },
  //上传时,判断文件的类型及大小是否符合规则
  beforeAvatarUpload(file) {
    const isJPG =file.type == 'image/jpeg' || file.type == 'image/png' || file.type == 'image/gif'
    const isLt2M = file.size / 1024 / 1024 < 2
    if (!isJPG) {
      this.$message.warning('上传头像图片只能是 JPG/PNG/GIF 格式!')
      return isJPG
    }
    if (!isLt2M) {
      this.$message.warning('上传头像图片大小不能超过 2MB!')
      return isLt2M
    }
    this.multfileImg = file
    return isJPG && isLt2M
   },
  //点击提交按钮,向服务器传递你要传递的参数,涉及到formData  
  submitBtn() {
    this.$refs.itemForm.validate(valid => {
      if (valid) {
        this.fd = new FormData()
        this.fd.append('token', sessionStorage.getItem('loginToken')) //传其他参数
        this.fd.append('id', this.itemForm.id)
        this.fd.append('user_name', this.itemForm.user_name)
        this.fd.append('user_nike_name', this.itemForm.user_nike_name)
        this.fd.append('user_sex', this.itemForm.user_sex)
        this.fd.append('user_phone', this.itemForm.user_phone)
        this.fd.append('user_email', this.itemForm.user_email)
        if (this.multfileImg != null) {
          this.fd.append('multfile', this.multfileImg)
        }
        api.updateUserInfo(this.fd).then(res => {
          if (res) {
            this.$message({ showClose: true, type: 'success', message: '设置成功' })
            this.initPage()
          }
        })
      } else {
          this.$message({
          showClose: true,
          type: 'error',
          message: '请检查表单信息的正确性'
          })
        return false
      }
    })
  
  }

elementUi--->实现上传图片效果(upload+formData)的更多相关文章

  1. vue ----element-ui 文件上传upload 组件 实现 及其后台

    1.前台 action 不用改 :https://jsonplaceholder.typicode.com/posts/ getFile: 获取文件 data(){ return { file: {} ...

  2. element-ui中上传文件upload

    <el-upload class="upload-demo" name="targetFile" ref="upload" :with ...

  3. vue+Element-ui实现分页效果

    当我们向后台请求大量数据的时候,并要在页面展示出来,请求的数据可能上百条数据或者更多的时候,并不想在一个页面展示,这就需要使用分页功能来去完成了. 1.本次所使用的是vue2.0+element-ui ...

  4. iOS开发 tableView点击下拉扩展 + 内嵌collectionView上传图片效果

    ---恢复内容开始--- //需要的效果 1.设置window的根视图控制器为一个UITableViewController #import "AppDelegate.h"#imp ...

  5. elementUi + express 上传图片

    // 前端代码 <el-upload drag action="http://localhost:4001/article/uploadCoverImage" multipl ...

  6. vue element-ui 组件上传图片 之后 对上传按钮 进行隐藏,删除之后重新显示

    注:如果在当前的 vue 文件里 写了 style 样式,得 去除 scoped [私有属性必须去除,不能保留](这个是重点,不去除不生效), template 部分 <el-upload    ...

  7. vue element-ui 组件上传图片 以及对 图片的 宽高 和 大小 格式等 做出限制

    vue  文件: 自行引用 elemen-ui    <el-upload                         action=" 让后端给你上传地址 "      ...

  8. 如何用elementui去实现图片上传和表单提交,用axios的post方法

    下面是在vue搭建的脚手架项目中的组件component文件夹下面的upload.vue文件中的内容 <!--这个组件主要用来研究upload这个elementui的上传插件组件--> & ...

  9. 改造vue-quill-editor: 结合element-ui上传图片到服务器

    前排提示:现在可以直接使用封装好的插件vue-quill-editor-upload 需求概述 vue-quill-editor是我们再使用vue框架的时候常用的一个富文本编辑器,在进行富文本编辑的时 ...

随机推荐

  1. GUI学习之二十二——QRubberBand学习总结

    今天学习一种全新的输入控件——QRubberBand()控件(橡皮筋选中) 一.描述 QRubberBand()提供了一个矩形或西安来只是选择或边界的效果(就像在桌面上点击鼠标后拖拽拉出来的框一样), ...

  2. Java数据封装成树形结构,多级

    参考地址:https://blog.csdn.net/chendu500qiang/article/details/91493147 1.实体类 @data public class PublishS ...

  3. 外网无法ping自己的linux服务器

    Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的:A.内核参数,B.防火墙,需要2个因素同时允许才能允许Ping,2个因素有任意一个禁Ping就无法Ping. 具体的配置方法如 ...

  4. java.sql.SQLException: Unknown system variable 'query_cache_size'

    改为 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java< ...

  5. Django【第26篇】:中介模型以及优化查询以及CBV模式

    中介模型以及优化查询以及CBV模式 一.中介模型:多对多添加的时候用到中介模型 自己创建的第三张表就属于是中介模型 class Article(models.Model): ''' 文章表 ''' t ...

  6. 【NOIP2016提高A组8.12】礼物

    题目 夏川的生日就要到了.作为夏川形式上的男朋友,季堂打算给夏川买一些生日礼物. 商店里一共有种礼物.夏川每得到一种礼物,就会获得相应喜悦值Wi(每种礼物的喜悦值不能重复获得). 每次,店员会按照一定 ...

  7. 【leetcode】Preimage Size of Factorial Zeroes Function

    题目如下: 解题思路:<编程之美>中有一个章节是不要被阶乘吓倒,里面讲述了“问题一:给定一个整数N,那么N的阶乘末尾有多少个0呢?例如N = 10, N! = 362800,N! 的末尾有 ...

  8. HTTP教程

    适合人群 本教程已为计算机学科毕业生和Web开发人员准备,帮助他们了解与超文本传输​​协议(HTTP)相关的基本到高级概念. 预备知识 在继续本教程之前,最好对Web概念,Web浏览器,Web服务器, ...

  9. System.currentTimeMillis和System.nanoTime()

    ns(nanosecond):纳秒, 时间单位.一秒的10亿分之一,即等于10的负9次方秒.常用作 内存读写速度的单位.  1纳秒=0.000001 毫秒  1纳秒=0.00000 0001秒 jav ...

  10. php end()函数 语法

    php end()函数 语法 作用:将数组内部指针指向最后一个元素,并返回该元素的值(如果成功).博智达 语法:end(array) 参数: 参数 描述 array 必需.规定要使用的数组. 说明:如 ...