vue实现上传图片

文章描述了在Vue应用中使用ElementUI的El-upload组件进行图片上传,包括单个头像和多张照片的上传处理,以及文件大小验证、上传成功回调和错误处理。同时提到了如何使用axios发送HTTP请求到后端API并处理响应。
摘要由CSDN通过智能技术生成

上传图片原生

<el-upload
    class="avatar-uploader"
    :action="uploadurl"
    :data="urlParms"
    :show-file-list="false"
    :on-success="handleAvatarSuccesss"
    :before-upload="beforeAvatarUpload"
    >
    <img v-if="ruleForm.cover" :src="baseurl+ruleForm.cover" class="avatar">
   <i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
    
data() {
    return {
      // 接口
      action: this.$axios.defaults.baseURL + '/example/images/addImages',
      // 传递的参数
      urlParms: {
        image: ''
      },
    }
}

// 上传成功后的钩子函数
handleAvatarSuccesss(res, file) {
    this.ruleForm.cover = res.data.images
},
// 上传文件之前的钩子
 beforeAvatarUpload(file) {
  //标题图片上传图片的限制和参数的获取
  console.log(file)
  this.urlParms.image = file
  const isLt2M = file.size / 1024 / 1024 < 2
  if (!isLt2M) {
    this.$message.error('上传头像图片大小不能超过 2MB!')
  }
  return isLt2M
},

上传多个头像

files

 file.file

 

<el-form-item label="案例照片">
    <el-upload
    action
    list-type="picture-card"
    :file-list="photoList"
    :on-remove="handleRemove"
    :http-request="getFile1"
    >
    <i class="el-icon-plus"></i>
  </el-upload>
</el-form-item>



getFile1(file) {
    this.$refs.upload.clearFiles();
    const isLt2M = file.file.size / 1024 / 1024 < 2;

    if (!isLt2M) {
      this.$message.error("上传图片大小不能超过 2MB!否则会上传失败");
    } else {
      //借助Formdata保存上传的文件
      const formData = new FormData();  
      // 上传接口的后台参数,数据
      formData.append("files", file.file);
      console.log(file.file,123)
      entertestserver.addFiles(formData).then(response => {
        // 获取数据成功后的其他操作
        console.log(response,132465)
        if (response.status == 1) {
          // this.ruleForm.imag = response.data.fileUrl
          //this.ruleForm.imag.push(response.data.fileUrl)
          this.ruleForm.imag = [...this.ruleForm.imag,response.data.fileUrl]
        }
      })
        .catch(error => {
          console.log(error);
        });
    }
  },
  
// 新增/编辑确定
fileJson:JSON.stringify(this.ruleForm.imag)

// 详情编辑
this.ruleForm.imag=response.data.fileList.map(item =>{
  return item.url
})

 上传头像单个

<el-form-item label="案例照片">
    <el-upload
      action
      list-type="picture-card"
      :on-preview="handlePictureCardPreview"
      :on-remove="handleRemove"
      :http-request="getFile1"
      :show-file-list="false"
      ref="upload"
      >
      <img style="width:75px;height:75px;" v-if="ruleForm.imag" :src="baseurl+ruleForm.imag">
      <i v-else class="el-icon-plus avatar-uploader-icon"></i>
    </el-upload>
</el-form-item>
getFile1(file) {
        this.$refs.upload.clearFiles();
        const isLt2M = file.file.size / 1024 / 1024 < 2;

        if (!isLt2M) {
          this.$message.error("上传图片大小不能超过 2MB!否则会上传失败");
        } else {
          const formData = new FormData();
          formData.append("image", file.file);
          entertestserver.addImages(formData).then(response => {
            // 获取数据成功后的其他操作
            console.log(response)
            if (response.status == 1) {
              this.ruleForm.imag = response.data.images
            }

          })
            .catch(error => {
              console.log(error);
            });
        }
      },
  geturl() {
    //按条件查询
    let data = {
    }
    entertestserver.getString(data).then(response => {
      // 获取数据成功后的其他操作
      console.log(response)
      if (response.status == 1) {
        this.baseurl = response.data
      }
    }).catch(error => {
      console.log(error);
    });
  },
  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code female artist

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值