file-upload-handling について
さまざまなバックエンドフレームワークで安全なファイルアップロードを設計する開発者向けスキルです。検証、スキャン、保存、配信を扱い、複数の実装例を参照できます。
主な機能
- 01ファイル形式とサイズの検証
- 02ファイル名のサニタイズ
- 03ウイルススキャンの指針
- 04保存とアクセス制御
- 05CDN 配信と署名付き URL
- 06バックエンドとクラウドの参考例
活用シーン
- 01アプリへのアップロード機能追加
- 02ユーザードキュメントの管理
- 03メディアファイルの配信
- 04一括インポートの構築
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill file-upload-handlingインストール後、Claude Code で/file-upload-handlingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/fastapi-file-upload.mdnodejs-express-file-upload-with-multer.mdpythonflask-file-upload.mds3cloud-storage-integration.mdscripts/validate-pipeline.shtemplates/pipeline.yaml詳細
ファイルアップロードの処理
目次
概要
さまざまなバックエンドフレームワークで、検証、サニタイズ、ウイルススキャン、効率的なストレージ管理、CDN 連携、適切なファイル配信の仕組みを備えた、安全で堅牢なファイルアップロードシステムを構築します。
使用する場面
- ファイルアップロード機能を実装する場合
- ユーザーがアップロードしたドキュメントを管理する場合
- メディアファイルを保存、配信する場合
- プロフィール画像のアップロードを実装する場合
- ドキュメント管理システムを構築する場合
- ファイルの一括インポートを処理する場合
クイックスタート
最小限の動作例:
# config.py
import os
class Config:
MAX_CONTENT_LENGTH = 50 * 1024 * 1024 # 50 MB
UPLOAD_FOLDER = 'uploads'
ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', 'docx', 'doc'}
UPLOAD_DIRECTORY = os.path.join(os.path.dirname(__file__), UPLOAD_FOLDER)
# file_service.py
import os
import mimetypes
import hashlib
import secrets
from werkzeug.utils import secure_filename
from datetime import datetime
import magic
import aiofiles
class FileUploadService:
def __init__(self, upload_dir, allowed_extensions, max_size=50*1024*1024):
self.upload_dir = upload_dir
self.allowed_extensions = allowed_extensions
self.max_size = max_size
self.mime = magic.Magic(mime=True)
// ... (see reference guides for full implementation)
リファレンスガイド
詳細な実装は references/ ディレクトリにあります:
| ガイド | 内容 |
|---|---|
| Python/Flask File Upload | Python/Flask のファイルアップロード |
| Node.js Express File Upload with Multer | Multer を使用した Node.js Express のファイルアップロード |
| FastAPI File Upload | FastAPI のファイルアップロード |
| S3/Cloud Storage Integration | S3/クラウドストレージ連携 |
ベストプラクティス
✅ 推奨事項
- ファイル拡張子と MIME タイプを検証する
- 処理前にファイルサイズを確認する
- ディレクトリトラバーサルを防ぐため、安全なファイル名を使用する
- Web ルートの外にファイルを保存する
- ウイルススキャンを実装する
- ファイル配信に CDN を使用する
- 直接アクセス用の署名付き URL を生成する
- ファイルのアップロード/ダウンロードイベントを記録する
- アクセス制御チェックを実装する
- 一時ファイルを削除する
❌ 禁止事項
- ユーザーが指定したファイル名を信用する
- Web からアクセス可能なディレクトリにファイルを保存する
- 任意のファイル形式を許可する
- アップロードされたファイルのウイルススキャンを省略する
- 絶対ファイルパスを公開する
- ファイルサイズを無制限に許可する
- アクセス制御を無視する
- 予測可能なファイルパスを使用する
- 機密性の高いメタデータをファイル名に保存する
- ファイルの内容の検証を忘れる
コメント
Markdown 対応