# web.files

## 功能

读取上传文件对象。

## 语法

```bt
web.files
```

## 参数

无参数。

## 返回值

| 类型 | 说明 |
| ------ | ------ |
| Object | 返回上传文件字段对象。对象键为表单文件字段名，值为该字段上传文件信息数组。 |

## 对象结构

`web.files` 的顶层对象按上传字段名分组。即使同一字段只上传了一个文件，该字段值也仍然是 Array。

| 字段 | 类型 | 说明 |
| ------ | ------ | ------ |
| 任意上传字段名 | Array | 该字段下的文件信息对象数组。字段不存在时读取结果为 Empty。 |

每个文件信息对象包含以下字段：

| 字段 | 类型 | 说明 |
| ------ | ------ | ------ |
| filename | String | 浏览器提交的原始文件名；没有文件名时为空字符串。 |
| size | Int | 上传文件字节数。 |
| type | String | 上传文件的 MIME 类型；请求未提供类型时为空字符串。 |
| path | String | BT 保存后的服务器本地临时文件路径。 |
| name | String | 表单文件字段名，例如 avatar、file。 |
| file | Fs | 绑定到 `path` 的 fs 对象，可继续调用 read、binary、move、copy、delete 等 fs 方法。 |

## 示例

```bt
// 上传字段 avatar
avatar = web.files.avatar[0]
result = avatar.filename

// 输出：logo.png
print result
```

`file` 字段可直接作为 fs 对象处理上传后的临时文件：

```bt
avatar = web.files.avatar[0]
saved = avatar.file.move('uploads')
result = saved.path()

print result
```

## 注意事项

- `web.files` 只包含文件字段；普通表单字段请读取 `web.post`。
- 上传文件会先保存到服务器临时目录，`path` 和 `file` 指向的是保存后的本地文件。
- `file.move(dir)` 会把临时文件移动到目标目录并返回新的 Fs 对象；后续应使用返回值继续访问移动后的文件。
