콘텐츠로 건너뛰기

개발자를 위한 파일 형식 빠른 참조

카테고리: 참조
이 기사는 현재 일본어로만 제공됩니다. 번역본은 순차적으로 공개될 예정입니다.

웹 애플리케이션 개발에서는 파일 검증, 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 가장 널리 보급되고 OS 표준 지원 일본어 파일명 문자 깨짐 (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">웹 폼 파일 검증 구현 체크리스트</a>
  • → <a href="/ja/reference/magic-bytes/" class="text-primary-600 dark:text-primary-400 hover:underline">매직 바이트 (파일 시그니처) 참고</a>