element ui upload 组件缩略图上删除按钮的实现

element ui 的官网上 upload 组件缩略图上删除按钮并没有实现他的功能
他组件内是定义了一个 handleRemove 的删除事件,那么怎么实现呢
首先在upload 组件上给他一个 ref 属性

<el-upload
  action="#"
  ref='files'
  list-type="picture-card"
  :auto-upload="false">
    <i slot="default" class="el-icon-plus"></i>
    <div slot="file" slot-scope="{file}">
      <img
        class="el-upload-list__item-thumbnail"
        :src="file.url" alt=""
      >
      <span class="el-upload-list__item-actions">
        <span
          class="el-upload-list__item-preview"
          @click="handlePictureCardPreview(file)"
        >
          <i class="el-icon-zoom-in"></i>
        </span>
        <span
          v-if="!disabled"
          class="el-upload-list__item-delete"
          @click="handleDownload(file)"
        >
          <i class="el-icon-download"></i>
        </span>
        <span
          v-if="!disabled"
          class="el-upload-list__item-delete"
          @click="handleRemove(file)"
        >
          <i class="el-icon-delete"></i>
        </span>
      </span>
    </div>
</el-upload>

然后再写handleRemove 事件方法

handleRemove(file) {
         // 获取到该组件调用handleRemove方法删除file对象
         this.$refs.files.handleRemove(file)
      },

这样就可以实现缩略图上的删除按钮了

### 使用 Element UI 实现 PDF 文件的缩略图预览 为了在 Element UI实现 PDF 文件的缩略图预览功能,可以采用 `vue-pdf` 库来处理 PDF 的加载与渲染。通过自定义上传组件的方式,在文件列表中展示 PDF 缩略图。 #### 安装依赖库 首先需要安装 `vue-pdf` 来支持 PDF 渲染: ```bash npm install --save vue-pdf ``` #### 组件代码示例 下面是一个完整的 Vue 单文件组件例子,展示了如何集成 PDF 预览到 Element UI 的上传控件中: ```html <template> <div> <!-- 文件上传 --> <el-upload action="#" :auto-upload="false" :on-change="handleChange" :file-list="fileList"> <el-button type="primary">选择文件</el-button> </el-upload> <!-- 展示PDF缩略图 --> <div v-if="pdfSrc" style="margin-top:20px;"> <p>PDF Preview:</p> <canvas ref="pdfCanvas"></canvas> </div> </div> </template> <script> import pdf from 'vue-pdf' export default { data() { return { fileList: [], pdfSrc: null, pageRendered: false } }, methods: { handleChange(file, fileList) { this.fileList = fileList; const reader = new FileReader(); reader.onload = (event) => { this.pdfSrc = event.target.result; // 初始化PDF显示 if (!this.pageRendered && this.$refs['pdfCanvas']) { let loadingTask = pdf.createLoadingTask(this.pdfSrc); loadingTask.promise.then(pdf => { let pageNumber = 1; let scale = 1.5; let canvas = this.$refs['pdfCanvas']; let ctx = canvas.getContext('2d'); pdf.getPage(pageNumber).then(function(page) { var viewport = page.getViewport({scale}); canvas.height = viewport.height; canvas.width = viewport.width; var renderContext = { canvasContext: ctx, viewport: viewport }; page.render(renderContext); this.pageRendered = true; }.bind(this)); }); } }; reader.readAsDataURL(file.raw); } } } </script> ``` 此段代码实现了当用户选择了新的 PDF 文件时会触发 `handleChange` 方法读取文件内容并将其转换成 Base64 字符串形式存储于 `pdfSrc` 变量内;接着利用 `vue-pdf` 提供的方法创建一个用于加载指定 URL 或者 Blob 数据的任务对象,并最终把第一页的内容绘制到了 `<canvas>` 上作为缩略图[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值