vue:处理base64格式文件pdf、图片预览

一、需求:后端返回是base64数据,需要前端处理来展示文件。

vue:处理base64格式文件pdf、图片预览_第1张图片

二、实现方法:

解释一下这段代码的功能:

  1. preview(item) 是一个函数,接受一个参数 item,其中包含了文件的相关信息。

  2. )首先,通过条件语句 if (item.type == 'pdf') 检查文件类型是否为 'pdf'。

  3. )如果文件类型是 'pdf',则执行以下操作:

    • 使用 webAPI.server.get() 方法发送一个请求,请求的URL是通过 this.previewUrl.format(item.id) 构建的。
    • 在请求成功后,使用 then 处理响应数据,将返回的 base64 字符串解码为字节数组。
    • 创建一个表示 PDF 文件的 Blob 对象,然后通过 URL.createObjectURL(blob) 创建一个用于在浏览器中预览的 URL。
    • 最后,调用 parent.layerAPI.openResultWin() 打开一个窗口,显示文件名和预览的文件 URL。(这一步对应第3点的代码)
  4. )如果文件类型不是 'pdf',则继续检查是否属于图像格式('png', 'gif', 'jpg', 'bmp', 'svg')。

  5. )如果文件类型是图像格式,执行以下操作:

    • 与 'pdf' 类似,发送一个异步请求获取文件内容,并处理响应数据。
    • 解码 base64 字符串为字节数组,创建一个表示图像的 Blob 对象。
    • 使用 URL.createObjectURL(blob) 创建用于在浏览器中预览的 URL。
    • 使用 this.$nextTick() 来确保在组件更新后执行代码。
    • 最后,如果存在 this.$refs.myImg,将图像的 showViewer 属性设置为 true,用于显示图像查看器。
    •  

            class="my-img"

            v-if="imageUrl"

            ref="myImg"

            :src="imageUrl"

            :preview-src-list="[imageUrl]"

          >

         

  6. )如果文件类型既不是 'pdf' 也不是图像格式,则可能会显示一条警告消息,(// this.$message.warning('暂不支持该格式预览');)。

总体而言,该函数用于处理文件预览的逻辑,支持预览 'pdf' 文件和一些图像格式。