# web.send_file

## 功能

直接把本地文件作为 HTTP 响应发送，适合下载大文件或导出文件，避免把文件内容一次性读入 BT 动态响应字符串。

## 语法

```bt
web.send_file(path)
send_file(path)
```

## 参数

| 参数 | 类型 | 必填 | 默认值 | 说明 |
| ------ | ------ | ------ | ------ | ------ |
| path | String/Fs | 是 | 无 | 要发送的本地文件路径。相对路径基于当前源码文件目录解析，`@/` 基于项目根解析。 |

## 返回值

| 类型 | 说明 |
| ------ | ------ |
| Bool | 设置成功返回 true；请求结束时由 Web 层发送文件。 |

## 示例

```bt
web.header('Cache-Control', 'public, max-age=3600')
web.send_file('@/downloads/report.csv')
```

## 注意事项

- 只能在 Web 请求中调用。
- 该能力会读取本地文件，受 `BT_PERMISSION_DENY=fs` / `BT_PERMISSION_ALLOW` 权限配置约束。
- 文件响应会由 Web 框架分块发送，支持 ETag、Last-Modified、条件请求和 HTTP Range。
- `web.send_file()` 设置后，本次请求不会写回最后表达式或 `print` 产生的动态响应体。
- `Content-Type` 默认按文件扩展名推断；需要覆盖时可提前调用 `web.header('Content-Type', value)`。
