# 7.5 前端文件组件
:::tip 概述
本节介绍前端项目(独立 EleVue 仓库)中的文件处理组件,包括上传组件(BasicUpload)、富文本编辑器(Editor)与 Excel 导入导出组件的使用方法。组件封装了 [7.1 文件上传全流程](/zh/tools/upload.html) 的接口调用。
:::
## Upload 上传组件
```vue
```
:::tip 字段值约定
`BasicUpload` 绑定的值建议存 **`filePath`(相对路径)**——提交表单后由 Service 的 `fileFields` 归一化,读取时自动补全 `FILE_DOMAIN_URL` 域名。上传需携带 `Authorization: Bearer ` 请求头(组件内部或 http 封装统一处理)。
:::
### 常用属性
| 属性 | 说明 |
|------|------|
| `v-model` | 绑定的文件值(相对路径) |
| `action` | 上传接口地址(`/api/upload/uploadFile`) |
| `maxCount` | 最大上传数量(1 = 单文件,如头像) |
| `:data="{ type: 'image' }"` | 上传类型(image 校验图片后缀白名单,两类均存入 `temp/` 临时目录) |
## Editor 富文本编辑器
```vue
```
:::tip 富文本字段
编辑器产出的 HTML 提交后,由 Service 的 `contentFields` 配置触发 `[IMG_URL]` 占位符处理(见 [7.3 富文本处理](/zh/tools/rich-text.html))。编辑器粘贴内容建议开启安全过滤模式防 XSS。
:::
## Excel 导入组件
```vue
```
:::tip 前端解析 vs 后端导入
- **后端导入(推荐,走业务校验)**:`el-upload` 直传 `/api/{module}/import`,由 Service 逐行 `add()`(字典反查、唯一校验、事务),见 [7.4 数据导入导出](/zh/tools/excel.html);
- **前端解析**:`ImportExcel` 组件用 `xlsx` 库本地解析为数组,适合导入前预览、无业务校验的场景。
:::
## Excel 导出
```typescript
import { jsonToSheetXlsx } from '@/components/Excel/src/Export2Excel';
// 前端直接导出(本地数据组装为 Excel,不经过后端)
jsonToSheetXlsx({
data: tableData.value,
header: {
name: '名称',
statusText: '状态',
createTime: '创建时间',
},
filename: '导出数据.xlsx',
});
```
```typescript
// 后端导出(大数据量 / 需要权限控制时):调用模块导出接口拿文件 URL
const res = await exampleExport(params); // 文件地址
window.open(res);
```
### 两种导出方式选择
| 方式 | 适用场景 | 特点 |
|------|---------|------|
| 前端 `jsonToSheetXlsx` | 当前页数据、无权限要求 | 零后端交互、即时下载 |
| 后端 `/export` 接口 | 全量数据、需权限与字典翻译 | `#[Permission]` 控制、`serializeMaps` 枚举转文字、分批防溢出 |