文件(图片和pdf)预览的实现

1.文件预览的弹框

<el-dialog
      :visible="showPdf == true || showImg == true"
      :show-close="true"
      width="1000px"
      class="dialog-div-pre-style"
      :before-close="closePreviewClick"
      center
    >
     
      <div v-if="showPdf == true" style="justify-content: center; align-items: center">
        <iframe
          frameborder="0"
          :src="pdfUrl"
          width="100%"
          height="500px"
        />
      </div>
      <div
        v-else-if="showImg == true"
        class="dialog-body-content-base-style"
      >
        <img :src="imgUrl" alt="picture" class="show-img-box">
      </div>
    </el-dialog>

2.触发文件预览的方法:

  async previewPdf(row) {
      if (!row) return
      const fileParams = row.fileParams // 获取文件名
      fileParams.forEach(async(item, index) => {
        const fileDelivery = item.fileName.split('.')
        const type = fileDelivery[fileDelivery.length - 1] // 获取文件格式
        const fileId = item.fileId
        this.$store.dispatch('shareMaterial/getDownloadPath', fileId).then(res => {
          if (res.code === 0) {
            this.fileUrl = res.data
            if (type.indexOf('pdf') !== -1) {
              this.pdfUrl = this.fileUrl
              this.showPdf = true
            } else if (['jpg', 'png', 'jpeg', 'bmp', 'tif', 'gif', 'pcx', 'tga', 'exif', 'fpx', 'svg', 'psd', 'cdr', 'pcd', 'dxf', 'ufo', 'eps', 'ai', 'raw', 'WMF', 'webp', 'avif', 'apng'].includes(type)) {
              this.imgUrl = this.fileUrl
              this.showImg = true
            } else {
              this.$message('当前文件暂不支持预览')
            }
          }
        })
      })

    // this.showPdf = true
    },

3.关闭文件预览的方法

   closePreviewClick() {
      if (this.showPdf === true) {
        this.showPdf = false
      } else if (this.showImg === true) {
        this.showImg = false
      }
    },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值