欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > vue通过iframe预览 pdf、word、xls、ppt、txt文件

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

2024/10/24 21:20:32 来源:https://blog.csdn.net/qq_61950936/article/details/141254880  浏览:    关键词:vue通过iframe预览 pdf、word、xls、ppt、txt文件

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

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

效果:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

组件代码:

<!--* @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'],// iframe需要通过office365预览的文件类型officeType: ['doc', 'docx', 'xls', 'xlsx'],}showIframe() {const { type } = this.fileItem;return this.state.fileType.includes(type);}/*** 处理文件预览路径* iframe中预览只能直接打开pdf文件,其他文件需要通过office365预览*/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>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com