📁 测试文件列表
提供用于上传功能验证、边界值测试和错误处理验证的虚拟文件。 所有文件均免费且无需注册。还附带 MD5 / SHA-256 哈希值和 curl / wget / PowerShell 下载命令。
按格式
按用途
📌 每个测试文件均附带
- ✅ 字节级精确大小保证
- ✅ 提供 MD5 / SHA-256 哈希值
- ✅ curl / wget / PowerShell 命令示例
- ✅ 直接链接分发(经 CDN / 高速下载)
相关参考
📖 常见的坑
用于验证上传限制与文件处理的、内容已知的测试文件。无需注册即可直接下载,并附有 MD5 / SHA-256 与 curl 命令。但「这个文件通过了」并不等于「不会出问题」。这里能确认的只是尺寸与格式的处理,对扩展名伪装、ZIP 炸弹、非法内部结构的耐受性需要另行验证。
| 情形 | 会发生什么 | 怎么处理 |
|---|---|---|
| 10 MB 的文件到达时不是 10 MB | multipart/form-data 会加上分隔串与头部,请求会大出几百字节。若以 base64 放进 JSON,约膨胀 33%。 |
试探边界时请用阈值文件的 9.9 / 10.0 / 10.1 MB。若经过 base64,实际上限按约 3/4 估算。 |
| 浏览器能过,服务器却拒绝 | 上限不止一处。nginx 的 client_max_body_size、PHP 的 upload_max_filesize 与 post_max_size,以及应用自身的校验各自独立生效。 |
最小的那个值就是实际上限。post_max_size 要大于等于 upload_max_filesize,多文件时还要按合计来设。 |
| 只看扩展名,伪装文件就能混进来 | 把可执行文件改名为 .png,扩展名检查和 Content-Type 检查都会放行 —— 这两个值都由发送方随意填写。 |
改用起始字节(magic bytes)判断。PNG 是 89 50 4E 47,PDF 是 25 50 44 46,ZIP 是 50 4B 03 04。完整对照见魔术字节表。 |
| 大小没超,却超时了 | 即便没超大小限制,线路慢也需要时间传输。掐断请求的不是大小限制,而是时间限制。 | 把 nginx 的 client_body_timeout、fastcgi_read_timeout 与 PHP 的 max_execution_time、max_input_time 一并调高。只调一个,仍会被最短的那个掐断。 |
| 没有假设会收到损坏的文件 | 连接中断与传输错误会让被截断的文件、头部损坏的文件在生产环境中经常出现。不少实现会在此抛出异常然后悄悄吞掉。 | 先把损坏文件灌进去,一直确认到用户实际看到的错误提示。 |
即使这里的文件全部通过,病毒扫描结果、并发上传时的磁盘耗尽、对象存储侧的上限仍是另一回事。「能收到上限」和「应该收下」是两件事。