| name | file-storage |
| description | ファイルアップロード、S3、ファイルシステム操作を扱う際に使用。 |
File & Storage
📋 実行前チェック(必須)
このスキルを使うべきか?
前提条件
禁止事項の確認
トリガー
- ファイルアップロード実装時
- S3連携時
- ファイル検証処理時
- 署名付きURL生成時
🚨 鉄則
ユーザーアップロードは信用しない。検証必須。
アップロード検証
const ALLOWED_TYPES = ['image/jpeg', 'image/png', 'image/webp'];
const MAX_SIZE = 5 * 1024 * 1024;
function validateUpload(file: File) {
if (!ALLOWED_TYPES.includes(file.mimetype)) {
throw new Error('Invalid file type');
}
if (file.size > MAX_SIZE) {
throw new Error('File too large');
}
const safeName = sanitizeFilename(file.originalname);
}
S3署名付きURL
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
const url = await getSignedUrl(s3Client, new GetObjectCommand({
Bucket: 'my-bucket',
Key: 'file.pdf'
}), { expiresIn: 3600 });
🚫 禁止事項まとめ
- ユーザー入力ファイル名のそのまま使用
- 拡張子だけでのファイルタイプ判断
- サイズ制限なしのアップロード
- 機密ファイルのパブリック公開