美文网首页前端资源大全
vue 预览视频与pdf

vue 预览视频与pdf

作者: 牛会骑自行车 | 来源:发表于2021-12-23 15:00 被阅读0次

没有用插件。最后的呈现是点击,将内容打开一个新页。

总体思路大概是,视频放video标签里,pdf放iframe里。
说完了哈哈哈哈哈哈哈哈哈哈

这次的需求是上传一个文件,限制文件为mp4和pdf,大小不超过500M。
上传文件是放在新增和修改的弹出框内,所以需要和新增修改一起完成。
emmm我的意思是,点击“上传文件”时,不调取接口,先完成本地文件的预览。等到确定新增和修改时,一起。

总体思路大概是,在上传的按钮下有一个容器,用v-if控制显隐;
里面还有俩容器,上传文件为视频时video,为pdf时为iframe。

效果图 👇 空状态 视频 pdf

代码说明: elementui自带的action我不会用。。每次都是给个占位符,最后使用http-request。accept为限制文件格式。show-file-list为显隐文件列表。。这个我也没用过。。我觉得它不好看哈哈哈哈哈哈哈哈哈哈
写的过程中发现iframe无法添加点击事件,我去百度。。就。。emmm.....很麻烦。。为了省事我加了一个容器,设置定位到iframe一样的位置,相当于我们看到的还是iframe爸特点击到的其实是那个隐形的容器~~

上代码 👇

           <el-upload
              class="upload-demo"
              action="#"
              :http-request="handleUpload"
              accept=".pdf, .mp4"
              :show-file-list="false"
            >
              <el-button size="mini" type="primary">点击上传</el-button>
              <div slot="tip" class="el-upload__tip">
                只能上传mp4/pdf文件,且不超过500k
              </div>
            </el-upload>
            <div class="preview-container" v-if="preview" @click="handlePlay">
              <video
                v-if="fileType === 'mp4'"
                alt="视频预览"
                width="100px"
                height="100px"
                :src="articleUrl"
              />
              <div class="pdf-container">
                <iframe
                  v-if="fileType === 'pdf'"
                  :src="articleUrl"
                  frameborder="0"
                ></iframe>
                <!-- 隐形的容器~~ -->
                <div class="frame-wrap"></div>
              </div>
            </div>

style ↓ 样式不对尼萌就自己再调调昂主要是看frame-wrap的~

.preview-container {
  margin-top: 20px;
  width: 100px;
  height: 100px;
}
.pdf-container {
  width: 100%;
  height: 100px;
  overflow: hidden;
  position: relative;
}
.frame-wrap {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
}

script标签内的methods ↓ (endsWith('文件类型')是昨天才学到的一个获取文件类型的方法,会有一个boolean返回值)

    // 上传方法
    handleUpload(file) {
      if (file.file.size > 512000) {
        this.$message("文件最大500K");
        return;
      }
      this.file = file.file;
      // 两种显示的路径都设置成articleUrl。至此完成预览
      this.articleUrl = URL.createObjectURL(this.file);
      // let type = file.file.name.substr(-3);
      // ↑这句是知道endsWith之前获取文件类型的愚蠢方式哈哈哈哈哈哈
      
      // 页面中用fileType来判断容器的显隐
      file.file.name.endsWith("mp4")
        ? (this.fileType = "mp4")
        : (this.fileType = "pdf");
      this.preview = true;
    },
    // 打开新页呈现文件预览
    handlePlay() {
      window.open(this.articleUrl, "_blank");
    },

tada~视频及pdf的预览及查看就完成啦

相关文章

  • vue 预览视频与pdf

    没有用插件。最后的呈现是点击,将内容打开一个新页。 总体思路大概是,视频放video标签里,pdf放iframe里...

  • vue-pdf查看pdf文件及打印乱码问题处理

    前言 vue中简单使用vue-pdf预览pdf文件,解决打印预览乱码问题 vue-pdf 使用 安装 npm in...

  • vue-pdf预览pdf文件问题

    项目用到pdf预览,试了pdf-dist和vue-pdf,总结下来,vue-pdf更好用。具体文档https://...

  • Vue页面预览PDF文件

    vue-pdf,可实现在线预览 PDF 格式的文档,流程: 在搭建好的 Vue 项目中,引入 Vue-pdf np...

  • vue 在线预览pdf

    vue 在线预览pdf 使用了vue-pdf插件,页面初始的loading使用了vant UI 的loading。

  • 前端PDF预览(vue)

    项目需要PDF预览,使用vue-pdf插件 npm引入 因为项目使用的element-ui,需求是要在弹框里预览P...

  • vue-pdf预览(以二进制格式存储在数据库中的文件)

    前言 使用vue-pdf插件预览数据库中以二进制存储的pdf文件 之前写的一篇是: vue-pdf查看本地pdf文...

  • PDF预览:vue-pdf

    1、下载依赖 2、基础示例(加载一页) 2、升级示例(加载多页) 3、升级示例(多页时,添加各种操作按钮)

  • pdf.js的使用实例

    最近 vue项目要在移动端实现在线浏览pdf,所以想到用pdf.jspdf.js可以实现在线预览pdf文档,核心部...

  • vue-pdf.js 在线预览问题

    最近修改公司vue项目中使用pdf.js来实现在线预览上传的各类文件.由于使用pdf.js在预览时是直接在标签内将...

网友评论

    本文标题:vue 预览视频与pdf

    本文链接:https://www.haomeiwen.com/subject/czdhqrtx.html