# 附件上传与下载问题排查指南
# 一、前置操作:补丁更新
在开始排查问题前,请先完成以下补丁更新步骤,排除已知问题干扰:
- 前端:优先安装最新前端补丁
- 后端:优先建议安装后端合集补丁,若无合集补丁通过以下链接检查是否存在相关补丁。若存在,请先安装对应补丁再进行后续问题排查。
补丁参考链接:http://help.primeton.com/productcs/patches/
# 二、上传失败类问题
# 上传失败诊断流程
- 前端控制台Network查看请求
- 检查文件大小限制配置
- 验证上传地址是否正确
- 查看后端应用日志
- 检查网络和防火墙
| 问题现象 | 原因 | 解决方案/补丁 |
|---|---|---|
| 上传时报错405 Not Allowed | 上传地址配置错误(配置成了服务器相对路径) | • 修改为默认接口:/api/lowcode/models/attachments/actions/upload• 或自定义后端API接口(需符合接口规范) |
| 上传超过10MB文件报超限 | 文件大小限制未调整 | 前端:修改组件文件大小限制 后端(application-afc.properties): afc.attachments.file-max-size= |
| 移动端上传大文件无loading,可重复提交 | 产品缺陷 | 安装最新前端补丁 |
| 多文件拖拽上传只上传一个 | 产品缺陷 | 安装最新前端补丁 |
| 接口返回500时上传失败事件未触发 | 产品缺陷 | 安装最新前端补丁 |
# 三、文件预览类问题
| 问题现象 | 原因 | 解决方案/补丁 |
|---|---|---|
| 点击文件无预览反应 | 文件格式不支持或预览服务未配置 | 默认支持格式:docx、xlsx、pdf、txt、jpg、png、jpeg 检查项: • 文件格式是否在支持范围内 • 首选项中OnlyOffice预览服务是否配置 |
# 四、文件显示类问题
| 问题现象 | 原因 | 解决方案/补丁 |
|---|---|---|
| PC端需多次刷新图片才显示,移动端正常 | 双节点+nginx轮询,请求打到不同节点 | • 调整架构使附件请求路由到同一节点 • 或配置nginx会话保持 |
| 移动端附件不显示/图片不回显 | 配置或数据加载问题 | 检查项: • 组件展示模式是否选择"图片" • 主子表级联深度配置是否正确 • 子表修改后需在主表刷新子表格 |
| 视图中多附件有时显示有时不显示 | 数据或接口问题 | 排查: • 确认附件是否存在 • 检查接口参数传递及响应 |
| 多附件需要直接显示所有文件 | 配置问题 | 附件组件高级-扩展属性添加:isViewVertical: true,并设置字段折行 |
| 表单中第二个附件按钮点击无反应 | 产品缺陷 | 安装最新前端补丁 |
# 五、文件下载类问题
| 问题现象 | 原因 | 解决方案/补丁 |
|---|---|---|
| 点击下载报错 | 权限、存储或接口问题 | 排查项: • 文件是否存在 • 存储模式(db/local) • 浏览器控制台错误 • 后端日志 |
| 需要控制附件可见但不可下载 | 权限控制需求 | EOS833+方案: 1. 新增数据权限,关联附件实体 2. 开启流程权限 3. 为角色赋权 4. 或使用组件"权限码控制" 注意:对833前历史文件可能无效 |
| 需要批量下载/打包下载 | 新需求 | 临时方案: • API单个下载: this.Api.downloadAttachment(attachmentId, fileName)• 自定义开发批量下载 |
| 需要隐藏下载按钮(表格模式) | 界面需求 | CSS隐藏:css<br>.attach-download-btn {<br> display: none !important;<br>}<br> |
# 六、文件删除类问题
| 问题现象 | 原因 | 解决方案/补丁 |
|---|---|---|
| 未保存表单,删除附件立即生效 | 产品设计:附件删除和表单保存是两个独立事务 | 当前版本如此,需用户注意操作流程 |
| 需要控制只能删除自己上传的附件 | 权限控制需求 | "允许删除"事件中添加判断:if (this.Context.user.employeeId == file.createUser) {callback(true);} else {callback(false);} |
| 本地存储模式删除接口未删除物理文件 | 存储配置或接口调用问题 | 排查: • 确认存储模式配置(application-afc.properties) • 验证删除接口调用是否正确 • 检查文件权限 删除接口: /api/lowcode/models/attachments/{attachmentId} |