vue通过iframe预览 pdf、word、xls、ppt、txt文件

23,747次阅读
没有评论

共计 1339 个字符,预计需要花费 4 分钟才能阅读完成。

vue 通过 iframe 预览 pdf、word、xls、ppt、txt 文件

iframe 中预览只能直接打开 pdf 文件,其他文件需要通过 office365 预览。

效果:
vue 通过 iframe 预览 pdf、word、xls、ppt、txt 文件vue 通过 iframe 预览 pdf、word、xls、ppt、txt 文件
vue 通过 iframe 预览 pdf、word、xls、ppt、txt 文件

组件代码:

!--
 * @fileName: 文件预览 -FileView.vue
 * @date: yanghaoxing-2024-08-16 09:32:24
!-->
template>
  div class="file-view">
    iframe v-show="showIframe()"
            :src="getViewFilePath(fileItem)"
            class="previewIframe">/iframe>
    div class="pt-20"
         v-show="!showIframe()">
      a-result status="success"
                title="该文件无法预览,已开始自动下载!"
                :sub-title="` 文件名:${fileItem.name},文件类型:${fileItem.type}`">
      /a-result>
    /div>
  /div>
/template>

script lang="ts">
import {
  Component, Emit, Prop, Watch, Mixins,
} from 'vue-property-decorator';
import abpbase from 'geofly-framework-web-common/libs/abpbase';
import MapMixins from '@/map/mixins/mapMixins';

@Component({
  name: 'FileView',
  components: {},
})
export default class FileView extends Mixins(abpbase, MapMixins) {
  @Prop({ type: Object }) fileItem;

  state = {
    
    fileType: ['txt', 'doc', 'docx', 'xls', 'xlsx', 'pdf', 'jpg', 'png', 'gif', 'bmp', 'jpeg'],
    
    officeType: ['doc', 'docx', 'xls', 'xlsx'],
  }

  showIframe() {
    const { type } = this.fileItem;
    return this.state.fileType.includes(type);
  }

  
  getViewFilePath({ type, filePath }) {
    if (this.state.officeType.includes(type)) {
      return `https://view.officeapps.live.com/op/view.aspx?src=${filePath}`;
    }
    return filePath;
  }
}
/script>

style lang="less" scoped>
.file-view {
  width: 100%;
  height: calc(100vh - 100px);
  border: 1px solid #ccc;
  .previewIframe {
    width: 100%;
    height: 100%;
    border: none;
  }
}
/style>

原文地址: vue 通过 iframe 预览 pdf、word、xls、ppt、txt 文件

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-10-27发表,共计1339字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)