サーバ上の特定ディレクトリにある画像ファイルをWebブラウザで一覧表示し、ユーザー操作で画像を別ディレクトリに移動できるWebアプリケーション。
- サーバサイド: Python(FastAPI)
- クライアントサイド: TypeScript, Vue.js, HTML, CSS
- サーバOS: Windows
project/
├── backend/
│ ├── app.py
│ ├── config.py
│ ├── static/
│ └── ...
├── frontend/
│ ├── src/
│ ├── public/
│ └── ...
├── image_source/ # 画像の元ディレクトリ(固定)
└── image_destination/ # 画像の移動先ディレクトリ(固定)
- サーバ上の
image_sourceディレクトリ内の画像ファイル一覧をページングで取得し、クライアントに返すAPIを用意する。 - クライアントはAPIから画像リストを取得し、サムネイルとして一覧表示する。
- クライアント側はオートページャ(スクロールや「もっと見る」等で自動的に次ページを取得)機能を持つ。
- クライアントで画像ごとに「コピー」ボタンを表示。
- ボタン押下時、対象画像を
image_sourceからimage_destinationへサーバ側でコピーするAPIを呼び出す。 - コピー済みの場合はサーバ側で判定し、クライアントにその旨を返す。
- コピー後、一覧を再取得して画面を更新する。
- 画像ファイルはjpg/png/gif/webpフォーマットに対応。
- サーバ・クライアント間の通信はREST API(JSON)を利用。
- サーバ側の画像ディレクトリパスは設定ファイルで管理。
- セキュリティ(認証・認可)は現時点では考慮しない。
GET /api/images- クエリパラメータ:
offset: 取得開始位置(例: 0, 20, 40, ...)limit: 取得件数(例: 20)
GET /api/images?offset=0&limit=20
{
"total": 100,
"images": [
{
"filename": "sample1.jpg",
"url": "/images/sample1.jpg"
},
{
"filename": "sample2.png",
"url": "/images/sample2.png"
}
// ...最大20件
]
}total: 画像の総数images: 取得した画像情報リスト
POST /api/images/copy
{
"filename": "sample1.jpg"
}{
"success": true,
"message": "画像をコピーしました",
"alreadyCopied": false
}{
"success": false,
"message": "すでにコピー済みです",
"alreadyCopied": true
}- 画像一覧画面
- 画像サムネイルをグリッド表示
- 各画像に「コピー」ボタン
- オートページャ機能でスクロールや「もっと見る」操作時に追加画像を自動取得・表示