一、从操作系统角度
操作系统里常见的文件类型包括:
| 类型 | 说明 | 举例 |
|---|---|---|
| 普通文件(Regular File) | 存储数据、文字、图片、可执行程序等 | .txt, .jpg, .exe, .py, .pdf |
| 目录文件(Directory) | 存储文件列表和结构信息 | /home/, /usr/, C:\Program Files\ |
| 链接文件(Link) | 指向其他文件的引用(硬链接、软链接) | Linux 下的 .lnk, symlink |
| 设备文件(Device File) | 代表硬件设备的接口 | /dev/null, /dev/sda, /dev/tty |
| 套接字文件(Socket) | 进程间通信用文件 | /var/run/docker.sock |
| 管道文件(FIFO / Pipe) | 支持进程间通信的通道 | /tmp/myfifo |
二、从网络/前后端传输角度
浏览器上传的“文件”其实是通过 HTTP 请求封装的二进制数据。 常见形式:
| 场景 | 数据类型 | 示例 |
|---|---|---|
| 表单上传(HTML form) | multipart/form-data | Content-Disposition: form-data; name="file"; filename="a.pdf" |
| API 上传(JS/Fetch) | FormData 或 Blob | fetch("/upload", {body: formData}) |
| Base64 上传 | application/json | {"file": "data:application/pdf;base64,..."} |
| 分片上传 | 多个 HTTP 分片,后端重组 | 大文件上传、视频断点续传 |
每个文件通常具备以下属性:
| 属性 | 说明 | 示例 |
|---|---|---|
filename | 文件名 | report.pdf |
content_type | MIME 类型 | application/pdf, image/png |
size | 文件大小 | 2.3 MB |
content | 文件的二进制内容(bytes) | b'%PDF-1.7...' |
path | 临时或保存路径 | /tmp/upload_xxx.pdf |
encoding | 文件编码(文本类) | utf-8 |
last_modified | 修改时间 | 2025-10-20 14:22:01 |
checksum | 校验值 | md5, sha256 |
三、从后端程序(Python/Agno)角度
在服务端(如使用 Agno、FastAPI、Flask)中,接收到的文件通常是以下几种对象:
| 框架 | 文件对象类型 | 示例代码 |
|---|---|---|
| FastAPI | UploadFile | file: UploadFile = File(...) |
| Flask | FileStorage | request.files['file'] |
| Django | InMemoryUploadedFile | request.FILES['file'] |
这些对象内部通常包括:
- 文件名 (
filename) - MIME 类型 (
content_type) - 原始二进制内容 (
content) - 临时文件路径(有时存在磁盘缓存)
四、从存储与管理角度
文件最终会被保存或处理,常见形式:
| 存储方式 | 用途 | 示例 |
|---|---|---|
| 本地磁盘 | 临时文件、缓存 | /tmp/upload.pdf |
| 对象存储 | 大文件、云端资源 | AWS S3, 阿里云 OSS |
| 数据库存储 | 元数据或小型 Base64 文件 | MySQL, MongoDB |
| CDN 分发 | 图片/视频访问优化 | Cloudflare, 七牛云 |