elementUI之upload上传、预览、删除(带确认提示)

elementUI之upload上传、预览、删除(带确认提示)

效果入下:

在这里插入图片描述

1.el-upload的HTML部分

1) action="#"属性用于控制【上传地址,是必选项】,但是这里我们不使用,所以复制“#”。这是因为一般在项目开发中,我们的接口请求一般习惯于统一管理,我们会在后续的代码中使用axios上传。
2)accept=".pdf"属性标识上传的文件类型,多个类型可用【英文逗号】分隔。
3)multiple属性控制【可以同时传递多个文件】。
4)limit="3"属性控制【最多上传的文件数量】
5):file-list="fileList"属性是【上传后的文件列表展示】
6):auto-upload="false"属性【阻止自动上传】,建议阻止自动上传

 <el-upload
        class="upload-demo"
        action="#"
        accept=".pdf"
        :on-preview="handlePreview"
        :before-remove="beforeRemove"
        :on-exceed="handleExceed"
        :on-change="uploadCertificateChange"
        multiple
        :limit="3"
        :file-list="fileList"
        :auto-upload="false"
      >
        <el-button
          size="small"
          type="primary"
          v-loading.fullscreen.lock="fullscreenLoading"
          >点击上传</el-button
        >
        <div slot="tip" class="el-upload__tip">只能上传PDF文件</div>
      </el-upload>

2.JS代码

1)上传
on-change文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用

 uploadCertificateChange(file) {
      this.$confirm("上传文件,是否继续?", "提示")
        .then(() => {
          this.fullscreenLoading = true;
          let fd = new FormData();
          fd.append("files", file.raw);
          this.$cm
            .postUploadCertificate(fd)
            .then((res) => {
              console.log(res);
              if (res.ErrorCode == "00000000") {
                this.$message.success("上传成功");
                this.certificatePath = res.Response;
              } else {
                this.$message.warning(res.Message);
                this.fileList.pop();
              }
              this.fullscreenLoading = false;
            })
            .catch((err) => {
              this.fullscreenLoading = false;
              err && this.$message.warning(err);
            });
          return true;
        })
        .catch(() => {
          this.$message.success("取消成功");
          this.fileList = [];
          return false;
        });
    },

2)预览

on-preview是点击文件列表中已上传的文件时的钩子,用于实现预览

handlePreview(file) {
	  // axios的基地址和上传文件路径同时存在时可预览
      if (this.$axios.defaults.baseURL && this.certificatePath) {
        window.open(
          this.$axios.defaults.baseURL + this.certificatePath,
          "_blank"
        );
      } else {
        this.$message.warning("暂不支持预览");
      }
},

3)删除

before-remove删除文件之前的钩子,参数为上传的文件和文件列表,若返回 false 或者返回 Promise 且被 reject,则停止删除

 beforeRemove(file, fileList) {
      // 移除前
      return this.$confirm(`确定移除 ${file.name}?`).then(() => {
        this.$message.success("已移除");
        this.certificatePath = "";
      });
    },

4)超出规定的文件上传个数限定

on-exceed文件超出个数限制时的钩子

 handleExceed(files, fileList) {
      this.$message.warning(
        `当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,已上传了 ${fileList.length} 个文件`
      );
    },
  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
el-table-column和el-uploadElement UI中的两个组件。 el-table-column是用于定义el-table中的列的组件。通过el-table-column可以设置列的标题、字段名、宽度、对齐方式等属性,使得在el-table中展示的数据具有结构化和可读性。 而el-upload是一个文件上传组件,可以用于在前端上传文件,并且可以自定义上传的文件类型、数量限制等。在el-table中使用el-upload可以实现在每一行的某个字段中上传图片的需求。通过配置el-upload的action属性、file-list属性等,可以实现上传文件和显示已上传文件的功能。 具体来说,可以通过在el-table中的每一行中使用el-upload组件,并在handleAvatarSuccess方法中将上传成功后的文件赋值给对应的字段,从而实现对n行、m列进行赋值的需求。 希望以上信息对您有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Elementui使用el-table+el-upload+箭头函数为每行数据上传图片](https://blog.csdn.net/zero_ghq/article/details/109860394)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [vscodeElementUI代码提示智能提示问题.pdf](https://download.csdn.net/download/qq_43934844/87504686)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值