1. 项目背景与核心需求
企业内部应用开发中,文件预览与下载是最基础却最容易出问题的功能模块。钉钉作为国内主流的企业办公平台,其小程序生态提供了完整的文件操作API,但实际开发时会遇到各种意料之外的兼容性问题。最近刚完成一个制造业企业的内部审批系统,其中涉及大量CAD图纸、Excel报表的在线预览与下载功能,踩了不少坑也积累了些实战经验。
这个功能看似简单,实则涉及三个技术层级:
- 钉钉容器环境的权限控制
- 前端文件流的处理与渲染
- 后端文件存储的适配策略
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 开发环境准备
2.1 基础配置要点
钉钉小程序开发需要特别注意容器版本兼容性。建议在app.js中强制声明最低版本要求:
javascript复制dd.setMinimumVersion({
version: '10.0.35',
success: () => console.log('版本支持'),
fail: () => dd.alert({title: '请升级钉钉到最新版'})
})
企业应用必须配置的域名白名单包括:
- 文件存储服务器域名(如OSS)
- 业务API接口域名
- 跨域代理域名(如果需要)
特别注意:测试环境与生产环境的域名需要分别配置,很多开发者会漏掉测试环境配置导致本地调试失败。
2.2 文件存储方案选型
根据文件类型和大小推荐不同方案:
| 文件类型 | <10MB | 10-100MB | >100MB |
|---|---|---|---|
| 办公文档 | 钉钉媒体API | 企业OSS | 分片上传 |
| 设计图纸 | Base64编码 | CDN加速 | 专用预览器 |
| 视频文件 | 不推荐 | 直链+鉴权 | 转码服务 |
我们项目最终采用混合方案:
- 小文件走钉钉媒体服务(自动鉴权)
- 大文件用企业自建MinIO集群
- 超大CAD图纸单独部署WebGL预览器
3. 文件预览实现详解
3.1 基础预览方案
钉钉官方提供dd.previewFile接口,但实际使用要注意这些
