s3-upload-handler
UI部品やクライアント側の処理、サーバー側の処理を含め、S3へのファイルアップロードを総合的に扱い、スムーズなファイル共有やデータ管理を実現するSkill。
📜 元の英語説明(参考)
Handle S3 file uploads including UI components, client-side logic, and server-side processing
🇯🇵 日本人クリエイター向け解説
UI部品やクライアント側の処理、サーバー側の処理を含め、S3へのファイルアップロードを総合的に扱い、スムーズなファイル共有やデータ管理を実現するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o s3-upload-handler.zip https://jpskill.com/download/16915.zip && unzip -o s3-upload-handler.zip && rm s3-upload-handler.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/16915.zip -OutFile "$d\s3-upload-handler.zip"; Expand-Archive "$d\s3-upload-handler.zip" -DestinationPath $d -Force; ri "$d\s3-upload-handler.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
s3-upload-handler.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
s3-upload-handlerフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
S3 Upload Handler Skill
この Skill は、事前構築済みの UI コンポーネント、カスタムのクライアントサイドロジック、またはサーバーサイド処理を使用して、AWS S3 へのファイルアップロードを処理する方法を提供します。
機能
- UI Component: ドラッグアンドドロップまたはボタンアップロード用の、すぐに使用できる
S3Uploader。 - Client SDK: カスタムアップロードインターフェース用の
ClientS3Uploaderクラス。 - Server Utilities: バックエンドでのファイル処理とアップロード用の
uploadFromServer。
使用パターン
1. 標準 UI Component (推奨)
ほとんどのユーザー向けアップロードニーズには、S3Uploader コンポーネントを使用します。
import { S3Uploader } from "@/components/ui/s3-uploader/s3-uploader";
// フォームまたはページでの使用例
<S3Uploader
presignedRouteProvider="/api/app/your-upload-route" // 署名付き URL を取得するための API ルート
variant="dropzone" // または "button"
maxFiles={5}
accept="image/*" // または ".pdf,.doc" のような特定の拡張子
onUpload={async (fileUrls) => {
console.log("Files uploaded:", fileUrls);
// 成功時の処理 (例: フォームの状態を更新)
}}
/>
2. カスタムクライアントサイドアップロード
UI を完全に制御する必要がある場合は (例: 非表示の入力、カスタムボタン)、ClientS3Uploader を使用します。
import { ClientS3Uploader } from "@/lib/s3/clientS3Uploader";
// 初期化
const uploader = new ClientS3Uploader({
presignedRouteProvider: "/api/app/your-upload-route"
});
// ファイルのアップロード
const url = await uploader.uploadFile(fileObject);
3. サーバーサイドアップロード
ストレージの前にファイルを処理する (サイズ変更、PDF の生成) 場合は、API ルートまたは Server Actions で uploadFromServer を使用します。
import uploadFromServer from "@/lib/s3/uploadFromServer";
// サーバーコンテキスト (API ルート/Action) 内
const url = await uploadFromServer({
file: base64String, // ファイルコンテンツを base64 として
path: "uploads/users/avatar.jpg", // バケット内の宛先パス
contentType: "image/jpeg" // MIME タイプ
});
環境設定
.env.local に必要な AWS 認証情報があることを確認してください。
AWS_ACCESS_KEY_ID="your-access-key"
AWS_SECRET_ACCESS_KEY="your-secret-key"
AWS_REGION="us-east-1"
AWS_S3_BUCKET_NAME="your-bucket-name"
API ルートの例 (署名付き URL 用)
通常、クライアントアップローダー用に署名付き URL を生成するための API ルートが必要です。
// src/app/api/app/upload-input-images/route.ts
import { createPresignedPost } from "@aws-sdk/s3-presigned-post";
import { S3Client } from "@aws-sdk/client-s3";
import { v4 as uuidv4 } from "uuid";
export async function POST(request: Request) {
const { fileName, fileType } = await request.json();
const client = new S3Client({ region: process.env.AWS_REGION });
const { url, fields } = await createPresignedPost(client, {
Bucket: process.env.AWS_S3_BUCKET_NAME!,
Key: `uploads/${uuidv4()}-${fileName}`,
Conditions: [
["content-length-range", 0, 10485760], // 最大 10 MB
["starts-with", "$Content-Type", fileType],
],
Fields: {
acl: "public-read",
"Content-Type": fileType,
},
Expires: 600, // 署名付きポストが期限切れになるまでの秒数。デフォルトでは 3600。
});
return Response.json({ url, fields });
}
詳細については、reference.md を参照してください。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
S3 Upload Handler Skill
This skill provides methods to handle file uploads to AWS S3 using pre-built UI components, custom client-side logic, or server-side processing.
Capabilities
- UI Component: Ready-to-use
S3Uploaderfor drag-and-drop or button uploads. - Client SDK:
ClientS3Uploaderclass for custom upload interfaces. - Server Utilities:
uploadFromServerfor backend file processing and uploading.
Usage Patterns
1. Standard UI Component (Recommended)
Use the S3Uploader component for most user-facing upload needs.
import { S3Uploader } from "@/components/ui/s3-uploader/s3-uploader";
// Usage in a form or page
<S3Uploader
presignedRouteProvider="/api/app/your-upload-route" // API route to get signed URL
variant="dropzone" // or "button"
maxFiles={5}
accept="image/*" // or specific extensions like ".pdf,.doc"
onUpload={async (fileUrls) => {
console.log("Files uploaded:", fileUrls);
// Handle success (e.g., update form state)
}}
/>
2. Custom Client-Side Upload
Use ClientS3Uploader when you need full control over the UI (e.g., hidden inputs, custom buttons).
import { ClientS3Uploader } from "@/lib/s3/clientS3Uploader";
// Initialize
const uploader = new ClientS3Uploader({
presignedRouteProvider: "/api/app/your-upload-route"
});
// Upload a file
const url = await uploader.uploadFile(fileObject);
3. Server-Side Upload
Use uploadFromServer in API routes or Server Actions for processing files (resizing, generating PDFs) before storage.
import uploadFromServer from "@/lib/s3/uploadFromServer";
// In a server context (API route/Action)
const url = await uploadFromServer({
file: base64String, // File content as base64
path: "uploads/users/avatar.jpg", // Destination path in bucket
contentType: "image/jpeg" // MIME type
});
Environment Configuration
Ensure .env.local has the necessary AWS credentials:
AWS_ACCESS_KEY_ID="your-access-key"
AWS_SECRET_ACCESS_KEY="your-secret-key"
AWS_REGION="us-east-1"
AWS_S3_BUCKET_NAME="your-bucket-name"
API Route Example (for Presigned URLs)
You typically need an API route to generate presigned URLs for the client uploader.
// src/app/api/app/upload-input-images/route.ts
import { createPresignedPost } from "@aws-sdk/s3-presigned-post";
import { S3Client } from "@aws-sdk/client-s3";
import { v4 as uuidv4 } from "uuid";
export async function POST(request: Request) {
const { fileName, fileType } = await request.json();
const client = new S3Client({ region: process.env.AWS_REGION });
const { url, fields } = await createPresignedPost(client, {
Bucket: process.env.AWS_S3_BUCKET_NAME!,
Key: `uploads/${uuidv4()}-${fileName}`,
Conditions: [
["content-length-range", 0, 10485760], // up to 10 MB
["starts-with", "$Content-Type", fileType],
],
Fields: {
acl: "public-read",
"Content-Type": fileType,
},
Expires: 600, // Seconds before the presigned post expires. 3600 by default.
});
return Response.json({ url, fields });
}
Refer to reference.md for more details.