# mm 文件上传处理指南

## 规则（Rules）

- 文件上传通过 Event 事件 + API 接口处理
- 事件位于 `app/sys/event_api/upload/` 下
- 支持图片、文档、视频、音乐、压缩包等文件类型

## 方法（Methods）

### 步骤1：配置上传事件

在 `app/sys/event_api/upload/event.json` 中配置：

```json
{
    "target": "/upload*",
    "name": "upload",
    "title": "上传文件API",
    "stage": "main",
    "main": "./main.js",
    "sort": 49,
    "end": true
}
```

### 步骤2：事件处理器注册上传 API

```javascript
var api = $.admin.api('upload', '上传');

module.exports = {
    async _init() {
        await api.call('update', 'app/');
    },
    async main(ctx, db) {
        $.push(db, $.admin.sql('sys').db(), true);
        return await api.run(ctx, db);
    }
};
```

### 步骤3：在 api.json 中定义上传接口

上传接口通常位于 `app/sys/plugin/main/api_upload/` 下，提供分片上传、图片上传、文件上传、视频上传等接口。

## 技巧（Tips）

- **类型限制**：在 api.json 中通过 param.json 限制文件扩展名
- **分片上传**：大文件使用分片上传（chunk API）提高成功率
- **存储路径**：文件默认存储在 `static/file/` 下，可通过配置修改
- 上传接口参考：`app/sys/plugin/main/api_upload/`
