ファイル管理機能
目的・用途
本機能は、アイテムのファイル詳細画面からファイルのコピーや置き換えを行う機能である。
利用方法
該当アイテムの編集権限を持つ場合、ファイル詳細画面のファイル名リンク欄に表示されるボタンから実行する。
利用可能なロール
| ロール | システム管理者 | リポジトリ管理者 | サブリポジトリ管理者 | 登録ユーザー | 一般ユーザー | ゲスト(未ログイン) |
|---|---|---|---|---|---|---|
| 利用可否 | ○ | ○ | ○ | ○ | ○ |
機能内容
該当アイテムの編集権限を持つアカウントでファイル詳細画面を表示した際、
ファイル名リンク欄に「ファイルを置き換え」「公開バケットにファイルをコピー」ボタンが表示される。「ファイルを置き換え」
- ワークフロー画面を経由せずに、該当ファイルを置き換えたい場合に使用する。
押下すると、エクスプローラーのファイル選択画面が表示される。
置き換えたいファイルを選択すると処理が開始される。- ※選択するファイルは、元のファイル名と同じもののみ選択できる。
異なるファイル名のファイルを選択した場合、エラーとなる。
- ※選択するファイルは、元のファイル名と同じもののみ選択できる。
- ファイルの置き換えが完了すると、関連するメタデータとアイテムのバージョンが更新され、
アイテム詳細画面に遷移する。 - 置き換え元のファイルがS3ストレージ(ロケーション)内のファイルである場合、
置き換え処理によってWEKOへ不可をかけないように、
S3側へのファイルアップロード処理自体はクライアント側で行う。- サーバー側で該当のロケーションのS3情報を元に、一時URLを発行する。
発行された一時URLに対して、クライアント側からPOSTを行うことで、
ファイルアップロード自体はWEKOを通さずに実行する。
- サーバー側で該当のロケーションのS3情報を元に、一時URLを発行する。
- 置き換え元のファイルがWEKOローカルストレージ(ロケーション)内のファイルである場合、
既存のWEKOローカルストレージへのファイル保存処理を流用する。
- ワークフロー画面を経由せずに、該当ファイルを置き換えたい場合に使用する。
「公開バケットにファイルをコピー」
- 該当ファイルをS3のバケットへコピーする。
- ※コピーしたファイルについてはWEKO上での管理対象外となる。
- あくまで該当ファイルをS3のバケット上に配置するだけの機能。
- ボタンを押下すると、アップロード先のバケットを選択するモーダルが表示される。
- ユーザープロファイル画面で設定するS3の情報を元に
(書き込み権限の有無によらず)既存バケットが取得され、バケット選択欄の候補となる。 - "新規作成バケット名"を選択した場合、ユーザープロファイル画面で設定するS3の情報を元に
入力したバケット名で公開バケットが作成され、コピーが実施される。
- ユーザープロファイル画面で設定するS3の情報を元に
- "バケット"か"新規作成バケット名"を選択し、実行ボタンを押下すると、コピー処理が実行される。
コピーが完了すると、モーダルにコピー先のファイルURLが表示される。
コピーしたファイルはWEKO管理対象外となるため、URLもこのタイミングでしか確認することはできない。 - コピー元のファイルがWEKOローカルストレージ(ロケーション)内のファイルである場合、
コピー処理はユーザープロファイルのS3情報を元に実行される。
そのため、配置先のバケットに対して、
ユーザープロファイルのS3アカウントが書き込み権限を持たない場合、コピー処理は失敗する。 - コピー元のファイルがS3ストレージ(ロケーション)内のファイルである場合、
コピー処理は該当ロケーションのS3情報を元に実行される。
そのため、配置先のバケットに対して、該当ロケーションのS3アカウントが書き込み権限を持たない場合、
コピー処理は失敗する。
コピー先のバケットには「ロケーションのS3アカウントに対して書き込み権限を付与する」、
「誰でも書き込み等可能な公開バケットとして設定する」等の事前設定が必要になる。
- 該当ファイルをS3のバケットへコピーする。
対応しているモジュール:「weko_records_ui」
処理概要
処理の実態部分は以下で実装している。
weko/modules/weko-records-ui/weko_records_ui/api.py
「ファイルを置き換え」
(1)get_file_place_info メソッドで、元ファイル情報を取得する
- アイテム詳細画面の「編集」ボタン押下時と同じ要領でアイテムのワークフローを特定する。
特定したワークフローに紐づくロケーションを元ファイルのアップロード場所とする。 - ロケーションがローカルでない場合、ロケーションのS3情報を使用して
ファイルアップロード用の一時URLを発行し、クライアント側に返す。 - ローカルの場合は一時URLの発行等は行わない。
- アイテム詳細画面の「編集」ボタン押下時と同じ要領でアイテムのワークフローを特定する。
(2)クライアント側の下記で(1)の返送情報を元に処理を行う。
- weko/modules/weko-records-ui/weko_records_ui/static/js/weko_records_ui/bucket.js
- ロケーションがローカルの場合、ファイルアップロードもWEKOで行うため、 ファイル自体も含める形で再度サーバー側にPOSTする。
- ロケーションがS3の場合、一時URLに対してファイルのアップロードを行う。 アップロード後、ファイル自体は含めず、ファイル名等の情報を再度サーバー側にPOSTする。
(3)replace_file_bucket メソッドで、メタデータの更新などを行う
- ロケーションがローカルの場合、ファイルアップロード自体もWEKOで行った上で、
関連するメタデータの更新/アイテムのバージョンアップ処理を行う。
ファイルのアップロード自体は既存のローカルへのファイル保存処理を流用する。 - ロケーションがS3の場合、ファイル自体はクライアント側でアップ済みなので、
メタデータの更新/アイテムのバージョンアップのみを行う。
- ロケーションがローカルの場合、ファイルアップロード自体もWEKOで行った上で、
更新履歴
| 日付 | GitHubコミットID | 更新内容 |
|---|---|---|
| > 2025/05/30 | ** | 初版作成 |