vue上传图片

 vue后台管理项目经常会遇到表单中上传图片的需求,我们运用element中的upload就可以实现这个功能,效果如下

可以删除,预览

在使用upload之前建议大家去读一边upload的文档,知道每个属性都是干什么的,

减少不必要的麻烦

先看下后端给的接口文档

 再看下我的代码

<el-upload action="/api/admin/uploade" multiple list-type="picture-card" :data="fileData" name="img"
              accept="image/jpeg,image/png,image/jpg" :on-preview="handlePictureCardPreview" :on-remove="handleRemove"
              :on-success="handleimg">
              <el-icon>
                <Plus />
              </el-icon>
              <template #tip>
                <div class="el-upload__tip">只能上传jpg/png/jpeg文件,且单个不超过2M</div>
              </template>
            </el-upload>
            <el-dialog v-model="dialogVisible">
              <img w-full :src="imageUrl" alt="Preview Image" />
            </el-dialog>
export default {
  data() {
    return {
      imageUrl: '',
      dialogVisible: false,
      fileData: {   // 额外参数
        id: ''
      },
   },
    handleRemove(img, fileList) {
      console.log(img, fileList);
    },
    handlePictureCardPreview(img) {//这里需要注意 用的img并不是file,因为接口文档给的是img,我们在upload中定义个name=“img”参数就可以了
      // 检查文件类型
      const isImage = img.raw.type.includes("image");
      if (!isImage) {
        this.$message.error("上传文件类型必须是图片!");
        return false
      }
      // 检查文件大小
      if (img.size > (2 * 1024 * 1024)) {
        this.$message.error(`上传文件大小不能超过10Mb`);
        this.$refs['refUpload'].handleRemove(img);
        return false;
      }
      // 检查文件数量
      if (fileList.length > 1) {
        this.$message.error(`上传文件最大数量为1`);
        this.$refs['refUpload'].handleRemove(img);
        return false;
      }
      this.ImageUrl = img.url;
      this.dialogVisible = true;
    },
    handleimg(res, img, fileList) {
      console.log(img);
      console.log(fileList);
      if (res.code === 200) {
        this.url = res.data.file
      } else {
        this.$message.error(`图片${img.name}上传失败`)
      }
    },
}

到这里就完成了图片上传的操作了

  • 3
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值