file-storage
ファイルアップロード、S3、ファイルシステム操作を扱う際に使用。
安装与使用
请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。
查看来源 ↗使用指南技能说明
File & Storage
📋 実行前チェック(必須)
このスキルを使うべきか?
- ファイルアップロードを実装する?
- S3連携を行う?
- ファイル検証処理を実装する?
- 署名付きURLを生成する?
前提条件
- 許可するファイルタイプを定義したか?
- ファイルサイズ上限を決定したか?
- 保存先を決定したか?(ローカル/S3等)
禁止事項の確認
- ユーザー入力のファイル名をそのまま使おうとしていないか?
- 拡張子だけでファイルタイプを判断しようとしていないか?
- サイズ制限なしでアップロードを許可しようとしていないか?
- 機密ファイルをパブリックにしようとしていないか?
トリガー
- ファイルアップロード実装時
- S3連携時
- ファイル検証処理時
- 署名付きURL生成時
🚨 鉄則
ユーザーアップロードは信用しない。検証必須。
アップロード検証
// ⚠️ 必須チェック
const ALLOWED_TYPES = ['image/jpeg', 'image/png', 'image/webp'];
const MAX_SIZE = 5 * 1024 * 1024; // 5MB
function validateUpload(file: File) {
// MIMEタイプ(⚠️ 拡張子だけで判断しない)
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 }); // 1時間
🚫 禁止事項まとめ
- ユーザー入力ファイル名のそのまま使用
- 拡張子だけでのファイルタイプ判断
- サイズ制限なしのアップロード
- 機密ファイルのパブリック公開
使用示例
查看来源仓库中的使用示例与配置说明。
查看来源 ↗来源历史
- 收录时间
- 2026-01-20
- 索引更新时间
- 2026-01-26
- Branch
- main
收录与同步日期属于本站记录。源码修改历史请查看来源仓库。
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!