测试文件生成器
需要一个 5 MB 的 JPG 或 100 KB 的 PDF 来测试上传限制?选择大小和扩展名,立即下载:文件在你的浏览器本地生成,不会上传到任何地方。
你会得到什么
真实有效的文件,而不只是改了名字的垃圾数据。
结构完全有效:可在任意 PDF 阅读器中打开、正常解压,或渲染为真实的 GIF 图像,并填充至你指定的精确大小。
一张真实的微型图片,通过标准的注释/数据块机制填充到目标大小,任何图片查看器都会自动忽略这些填充内容。
可读的占位文本、随机字节,或全零填充:任你选择,字节数精确无误。
只要目标大小超过几百字节,就能精确命中。少数格式(PDF、GIF、JPG、PNG、ZIP)存在一个无法避免的最小结构大小。工具始终会显示实际生成的大小,而不仅仅是你输入的数值。
工作原理
每种格式都严格按照其规范逐字节构建,填充内容被巧妙地藏在解析器必须跳过的位置。PDF 是一份真实的五对象文档,其交叉引用表精确记录了每个对象的字节偏移量,填充是通过一行超大的注释实现的;ZIP 是一个货真价实的压缩包,围绕一个填零条目构建了本地文件头、中央目录和结束记录,并包含针对该内容实际计算出的真实 CRC-32 校验和——这很重要,因为解压工具会校验这个值并拒绝伪造文件。
图片文件也采用同样的处理方式:GIF 通过多个最多 255 字节的注释扩展子块来增大体积,JPEG 通过每段上限 64 KB 的 COM 段,PNG 则通过在 IEND 之前插入一个自定义的辅助数据块(带有自己的 CRC-32 校验和,并且类型字段首字母为小写,以便解码器知道可以安全忽略它)。这种结构上的诚实正是关键所在:这些文件能通过魔数校验、在真实的查看器中正常解码、并且能通过校验和验证,因此能够真正测试那些会检查内容的上传管道。
专门测试图片上传时有一点需要注意:如果上传管道会对图片重新编码(大多数头像和照片上传功能都会这样做),填充内容会在重新编码过程中被丢弃,你的 5 MB JPG 到了另一端会变得很小。请在重新编码发生之前测试体积限制,或者改用 ZIP 或 PDF,这类管道很少会重写它们。文件不会从任何地方下载:字节全部在内存中组装,并以 blob 的形式交给你的浏览器,这也是为什么即使生成几百兆的文件也是瞬间完成的。