开发者文件格式快速参考
分类:参考
本文目前仅提供日文版本。我们正在进行翻译工作。
在网络应用开发中,文件验证、MIME 类型判定和上传限制设计等都频繁需要文件格式知识。本文汇总了开发现场常见的文件格式列表。收藏此页面,即可随时查阅作为快速参考指南。
图像格式
| 文件扩展名 | MIME 类型 | 压缩 | 透明度 | 主要用途 |
|---|---|---|---|---|
.png |
image/png |
无损 | 支持 | 截图、徽标、图标 |
.jpg / .jpeg |
image/jpeg |
有损 | 不支持 | 照片、缩略图 |
.gif |
image/gif |
无损 | 支持 (1bit) | 动画、简单图形 |
.webp |
image/webp |
两者 | 支持 | 网络通用(PNG 后继候选) |
.avif |
image/avif |
两者 | 支持 | 下一代网络图像 |
.svg |
image/svg+xml |
无 (XML) | 支持 | 矢量图像、图标 |
<strong>注意:</strong>SVG 基于 XML,存在 XSS(跨站脚本)风险。直接显示用户上传的 SVG 是危险的。必须进行清理处理。
文档格式
| 文件扩展名 | MIME 类型 | 内部结构 | 主要用途 |
|---|---|---|---|
.pdf |
application/pdf |
二进制 | 打印用文档、表格 |
.docx |
application/vnd.openxmlformats-officedocument.wordprocessingml.document |
ZIP(XML) | Word 文档 |
.xlsx |
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
ZIP(XML) | Excel 电子表格 |
.pptx |
application/vnd.openxmlformats-officedocument.presentationml.presentation |
ZIP(XML) | PowerPoint 演示文稿 |
存档格式
| 文件扩展名 | MIME 类型 | 特点 | 注意事项 |
|---|---|---|---|
.zip |
application/zip |
最广泛的发行版、操作系统标准支持 | 日本语文件名乱码(UTF-8 vs CP932) |
.tar.gz |
application/gzip |
Unix/Linux 标准 | Windows 上可能需要解压工具 |
.7z |
application/x-7z-compressed |
高压缩比 | 需要专用工具 (7-Zip) |
.rar |
application/vnd.rar |
支持分割归档 | 专有格式 |
文本和数据格式
| 文件扩展名 | MIME 类型 | 用途 | 常见问题 |
|---|---|---|---|
.csv |
text/csv |
数据交换、导入/导出 | 字符编码、换行码和 BOM |
.json |
application/json |
API 通信、配置文件 | UTF-8 必需(RFC 8259) |
.xml |
application/xml |
配置文件和数据交换 | 与编码声明不匹配 |
.txt |
text/plain |
日志、备注、README | 字符编码的自动检测不稳定 |
MIME 类型验证
在实现文件上传功能时,验证 MIME 类型和文件扩展名都很重要。但是,MIME 类型可以在客户端伪造,因此也应该在服务器端使用魔术字节(文件头)检查。
// PHP でのマジックバイトによる判定
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mimeType = $finfo->file($_FILES['upload']['tmp_name']);
$allowedTypes = [
'image/png',
'image/jpeg',
'image/webp',
'application/pdf',
];
if (!in_array($mimeType, $allowedTypes, true)) {
throw new Exception('許可されていないファイル形式です');
}
// Node.js での file-type ライブラリを使った判定
import { fileTypeFromFile } from 'file-type';
const type = await fileTypeFromFile('upload.png');
console.log(type);
// { ext: 'png', mime: 'image/png' }
下载测试文件
对于各种格式的验证处理和上传功能测试,请使用 DevLab 的测试文件。
- <a href="/ja/files/images/">图像文件</a> — PNG、JPG、WebP、GIF 多种尺寸
- <a href="/ja/files/pdf/">PDF 文件</a> — 各种大小的 PDF 测试文件
- <a href="/ja/files/zip/">ZIP 文件</a> — 用于测试存档处理
- <a href="/ja/files/csv/">CSV 文件</a> — 数据导入测试
- <a href="/ja/files/json/">JSON 文件</a> — 用于 API 测试
- <a href="/ja/files/txt/">文本文件</a> — 用于测试文本处理
- <a href="/ja/files/broken/">损坏文件</a> — 错误处理测试
总结
对文件格式的正确理解是实现安全、稳健的上传功能的基础。应该使用MIME类型和魔数字节进行验证,而不仅仅是文件扩展名,以执行适当的验证。建议将此参考资料加入书签,以便在开发时随时查阅。
本文中可用的测试文件
- → <a href="/ja/files/images/" class="text-primary-600 dark:text-primary-400 hover:underline">图像测试文件列表 (PNG / JPG / WebP / GIF)</a>
- → <a href="/ja/files/pdf/" class="text-primary-600 dark:text-primary-400 hover:underline">PDF 测试文件列表</a>
- → <a href="/ja/files/zip/" class="text-primary-600 dark:text-primary-400 hover:underline">ZIP 测试文件列表</a>
- → <a href="/ja/files/csv/" class="text-primary-600 dark:text-primary-400 hover:underline">CSV 测试文件列表</a>
- → <a href="/ja/files/json/" class="text-primary-600 dark:text-primary-400 hover:underline">JSON 测试文件列表</a>
相关文章
- → <a href="/ja/blog/file-validation-checklist/" class="text-primary-600 dark:text-primary-400 hover:underline">Web 表单文件验证实现检查清单</a>
- → <a href="/ja/reference/magic-bytes/" class="text-primary-600 dark:text-primary-400 hover:underline">魔数(文件签名)参考</a>