更新记录
1.0.0(2026-01-09)
- ✅ 支持多种文件格式预览
- Word (.docx)
- PDF (.pdf)
- Excel (.xls, .xlsx)
- TXT (.txt)
- PowerPoint (.ppt, .pptx)
- ✅ 响应式设计,适配不同屏幕尺寸
- ✅ 支持文件缩放功能(Word 文档)
- ✅ 简洁美观的 UI 设计
- ✅ 支持 H5 平台
- ✅ 组件化设计,易于集成和使用
平台兼容性
uni-app(3.94)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | - | √ | √ | √ | - | √ | √ | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|
| √ | - | - | - | - | - | - | - | - | - | - |
其他
| 多语言 | 暗黑模式 | 宽屏模式 |
|---|---|---|
| × | × | √ |
文件预览组件 (FilePreview)
项目介绍
FilePreview 是一个基于 uni-app 开发的文件预览组件,支持多种文件格式的在线预览,包括 Word、PDF、Excel、TXT 和 PowerPoint 等。该组件采用 iframe 嵌入方式,使用了多种第三方库来实现不同类型文件的预览功能。
功能特性
- ✅ 支持多种文件格式预览
- Word (.doc, .docx)
- PDF (.pdf)
- Excel (.xls, .xlsx)
- TXT (.txt)
- PowerPoint (.ppt, .pptx)
- ✅ 响应式设计,适配不同屏幕尺寸
- ✅ 支持文件缩放功能(Word 文档)
- ✅ 简洁美观的 UI 设计
- ✅ 支持 H5 平台
- ✅ 组件化设计,易于集成和使用
- ✅ 封装为 uni_modules,一键导入即可使用
快速开始
安装组件
该组件已封装为 uni_modules,可直接在 uni-app 项目中使用。您可以通过以下两种方式安装:
-
在 HBuilderX 中直接导入:
- 打开 HBuilderX
- 点击工具栏的 "插件市场"
- 搜索 "文件预览组件"
- 点击 "导入"
-
手动复制到项目中:
- 将
yxt-file-preview目录复制到您的 uni-app 项目的uni_modules目录下
- 将
引入组件
uni_modules 组件会自动注册,无需手动引入,可直接在页面中使用:
<template>
<view class="preview-container">
<yxt-file-preview
:value="previewUrl"
:type="previewType"
/>
</view>
</template>
<script>
export default {
data() {
return {
previewUrl: '', // 文件 URL
previewType: '' // 文件类型
};
}
};
</script>
示例用法
基本使用
<template>
<view class="container">
<yxt-file-preview
:value="'https://example.com/demo.pdf'"
type="pdf"
/>
</view>
</template>
动态加载文件
<template>
<view class="container">
<button @click="loadFile">加载文件</button>
<yxt-file-preview
v-if="showPreview"
:value="fileUrl"
:type="fileType"
/>
</view>
</template>
<script>
export default {
data() {
return {
showPreview: false,
fileUrl: '',
fileType: ''
};
},
methods: {
loadFile() {
// 模拟异步获取文件信息
setTimeout(() => {
this.fileUrl = 'https://example.com/demo.docx';
this.fileType = 'word';
this.showPreview = true;
}, 1000);
}
}
};
</script>
属性说明
| 属性名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| value | String | 是 | - | 文件的 URL 地址 |
| type | String | 是 | - | 文件类型,支持:word, pdf, excel, txt, ppt, pptx |
方法说明
| 方法名 | 参数 | 说明 |
|---|---|---|
| preview | { url: String, type: String } | 通过引用调用,主动打开预览 |
浏览器兼容性
| 浏览器 | 版本 | 兼容性 |
|---|---|---|
| Chrome | 80+ | ✅ 支持 |
| Firefox | 75+ | ✅ 支持 |
| Safari | 13+ | ✅ 支持 |
| Edge | 80+ | ✅ 支持 |
| IE | 11 | ❌ 不支持 |
技术实现
核心依赖
| 文件类型 | 预览方式 | 依赖库 |
|---|---|---|
| Word | docx-preview | jszip |
| PDF.js | - | |
| Excel | LuckyExcel | - |
| TXT | 原生文本渲染 | - |
| PowerPoint | pptxjs | - |
项目结构
├── uni_modules/
│ └── yxt-file-preview/ # 文件预览组件
│ ├── components/ # 组件目录
│ │ └── yxt-file-preview/ # 主组件
│ ├── static/ # 静态资源
│ │ └── hybrid/ # 第三方预览库
│ ├── package.json # 组件配置文件
│ └── README.md # 组件说明文档
注意事项
- 仅支持 H5 平台:该组件目前仅支持 H5 平台预览,其他平台暂不支持
- 跨域问题:预览文件需要服务器支持跨域访问,否则可能无法正常预览
- 性能问题:预览大文件时可能会有性能问题,建议文件大小不超过 50MB
- 文件格式:确保传入的文件类型与实际文件格式一致,否则可能无法正常预览
- 服务器环境:文件预览需要服务器环境,本地文件可能无法正常预览
常见问题
1. 为什么预览失败?
可能的原因:
- 文件 URL 不正确或文件不存在
- 文件类型与实际格式不符
- 服务器不支持跨域访问
- 浏览器不兼容
2. 预览大文件时卡顿怎么办?
- 建议优化服务器,提高文件传输速度
- 考虑对大文件进行压缩处理
- 对于特别大的文件,建议提供下载功能而非在线预览
3. 如何支持更多文件格式?
目前组件支持的文件格式有限,如需支持更多格式,可以:
- 扩展组件的文件类型映射
- 集成更多第三方预览库
- 自定义预览逻辑
版本更新记录
v1.0.0
- 初始版本,支持多种文件格式预览
- 封装为 uni_modules 组件
- 支持 H5 平台
许可证
MIT License
贡献
欢迎提交 Issue 和 Pull Request 来改进这个组件!
致谢
感谢以下开源项目的支持:

收藏人数:
购买普通授权版(
试用
使用 HBuilderX 导入示例项目
赞赏(0)
下载 15
赞赏 0
下载 13106545
赞赏 1842
赞赏
京公网安备:11010802035340号