跳到内容

开发者文件格式快速参考

分类:参考
本文目前仅提供日文版本。我们正在进行翻译工作。

在网络应用开发中,文件验证、MIME 类型判定和上传限制设计等都频繁需要文件格式知识。本文汇总了开发现场常见的文件格式列表。收藏此页面,即可随时查阅作为快速参考指南。

主要文件格式使用矩阵 按类别的文件格式和主要用途 图像 JPEG / JPG PNG (透過) WebP (Web推奨) AVIF (次世代) SVG (ベクター) GIF (アニメ旧式) 文档 PDF (配布) DOCX (Word) XLSX (Excel) PPTX (PowerPoint) ODT (OpenDoc) RTF (互換) 压缩包 ZIP (標準) TAR.GZ (Unix) 7Z (高圧縮) RAR (有償) XZ (LZMA) BZIP2 (旧) 文本/数据 JSON (API) CSV (表計算) XML (構造) YAML (設定) TOML (設定) TXT (素朴)
图1: 4 类主要文件格式

图像格式

文件扩展名 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>