elementUi实现上传图片效果(upload+formData)

https://www.cnblogs.com/wangqi2019/p/10906605.html

现在谈一下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
      }
    })

  

  }

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ElementUI是一款基于Vue.js的UI组件库,而Axios则是一个基于Promise的HTTP库,它可以方便地发送与接收HTTP请求。要在ElementUI实现图片上传功能,我们可以借助Axios来发送POST请求。 首先,我们需要在Vue组件中引入ElementUI和Axios,可以在组件的`mounted()`生命周期函数中引入,也可以在`<script>`标签内引入。 接下来,需要在Vue组件的`data`中定义一个`file`对象,用于保存上传的图片文件。同时,需要在模板中加入一个`<el-upload>`标签,该标签实现ElementUI的文件上传功能。 在`<el-upload>`标签中,可以设置上传的URL、上传文件的类型、最大上传数量等选项。其中,关键的是设置`action`属性,该属性指定了图片上传的后端URL。 在点击图片上传按钮后,`@change`事件会触发一个方法。该方法中,我们可以通过`FormData`对象来创建一个表单数据,然后通过Axios的`post`方法将表单数据发送到后端。在发送请求时,可以指定`headers`头部,用于指定文件的MIME类型等信息。 在后端接收到上传的图片数据后,可以进行相应的处理,例如保存图片文件、生成图片链接等。 最后,可以在Vue组件中设置一个回调函数来处理上传成功或失败的情况。 总结起来,使用ElementUI和Axios实现图片上传的步骤如下: 1. 引入ElementUI和Axios 2. 在`data`中定义一个`file`对象 3. 在模板中使用`<el-upload>`标签,并设置相关属性和事件 4. 实现文件上传的方法,使用Axios发送POST请求,将图片文件作为表单数据发送到后端 5. 后端接收到图片数据后进行处理 6. 设计上传成功或失败的处理函数 以上即为使用ElementUI和Axios实现图片上传的简要过程,希望对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值