一、从操作系统角度
操作系统里常见的文件类型包括:
类型 | 说明 | 举例 |
---|---|---|
普通文件(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, 七牛云 |