File Entity(フィールド追加可能なファイル)

Drupalのファイルエンティティを拡張し、フィールドの追加と表示を可能にします。ファイルをタイプ別に整理し、カスタムフィールド、表示モード、フォーマッターを設定できます。

file_entity
64,407 sites
58
drupal.org

インストール

Drupal 11, 10 v8.x-2.3
composer require 'drupal/file_entity:8.x-2.3'
Drupal 9 v8.x-2.0
composer require 'drupal/file_entity:8.x-2.0'

概要

File Entityは、Drupalコアのファイルエンティティを完全な機能を持つコンテンツエンティティに変換する包括的なモジュールです。Field UIを通じてファイルにカスタムフィールドを追加したり、MIMEタイプに基づいてファイルをタイプ(バンドル)別に整理したり、様々な表示モードやフィールドフォーマッターを使用して表示したりできます。

このモジュールは、画像、音声、動画、ドキュメント用の組み込みファイルタイプを提供し、アップロードされたファイルをMIMEタイプに基づいて自動的に分類します。HTML5の音声・動画フォーマッター、レスポンシブ画像サポート、動的リンクテキスト用のTokenサポート付きダウンロードリンクフォーマッターが含まれています。

File EntityはDrupalのエコシステムと深く統合されており、ファイル一覧とフィルタリング用のViews統合、動的alt/titleテキスト用のToken APIサポート、ファイルURLエイリアス用のオプションのPathauto統合、ヘッドレスDrupal実装用のREST/HAL APIノーマライザーを提供します。

Features

  • フィールド追加可能なファイルエンティティ - Field UIを使用して任意のDrupalフィールドタイプをファイルに追加可能
  • ファイルタイプバンドル(画像、音声、動画、ドキュメント)とMIMEタイプによる自動分類
  • 設定可能なMIMEタイプパターンを持つカスタムファイルタイプ
  • タイプ選択、保存先スキーム、フィールド設定を含むマルチステップファイルアップロードウィザード
  • コントロール、自動再生、ループオプション付きHTML5オーディオプレーヤーフォーマッター
  • コントロール、自動再生、ループ、ミュート、サイズ設定付きHTML5ビデオプレーヤーフォーマッター
  • レスポンシブ画像スタイルをサポートするレスポンシブ画像フォーマッター
  • Tokenをサポートするカスタマイズ可能なリンクテキスト付きダウンロードリンクフォーマッター
  • 人間が読みやすいファイルサイズを表示するファイルサイズフォーマッター
  • AJAXモーダルダイアログによるインラインファイル編集ウィジェット
  • アーカイブのアップロードと展開機能
  • 専用データベーステーブルでのファイルメタデータ保存(画像サイズなど)
  • ファイル所有者、タイプ、ストリームラッパーに基づく詳細なアクセス制御
  • ファイルタイプごとの動的パーミッション(自分の/すべての編集・削除・ダウンロード)
  • ファイル管理用のカスタムフィールド、フィルター、引数を含むViews統合
  • 画像の動的altおよびtitle属性用Token API統合
  • ファイルURLエイリアス用Pathauto統合
  • base64ファイルコンテンツを含むヘッドレスDrupal用RESTおよびHAL APIノーマライザー
  • 削除、永続化、一時化のための一括操作
  • 各ファイルの使用場所を表示するファイル使用状況追跡ビュー
  • ファイルタイプ、MIMEタイプ、表示モードに基づくテーマサジェスト

Use Cases

カスタムメタデータ付きメディアライブラリ

File Entityを使用して、画像に撮影者クレジット、著作権情報、ライセンス条件のカスタムフィールドを持つリッチなメディアライブラリを作成します。音声ファイルにはアーティスト、アルバム、再生時間のフィールドを持たせることができます。動画ファイルには解像度、コーデック情報、トランスクリプトを保存できます。

ドキュメント管理システム

アップロードされたドキュメントがタイプ別に自動分類されるドキュメント管理ワークフローを実装します。ドキュメントバージョン、承認ステータス、部門、有効期限のフィールドを追加します。Viewsを使用して部門やステータス別のフィルタリングされたドキュメント一覧を作成します。

マルチフォーマットメディア表示

HTML5の音声・動画フォーマッターを使用して、ネイティブブラウザプレーヤーでメディアファイルを表示します。自動再生、コントロール、ループ設定を構成できます。画像には、デバイスのビューポートに基づいて最適なサイズの画像を配信するレスポンシブ画像フォーマッターを使用します。

セキュアなファイル配布

機密ファイルをプライベートファイルシステムに保存し、詳細なパーミッションを使用してアクセスを制御します。異なる機密レベル用のファイルタイプを作成し、それぞれに特定のダウンロードパーミッションを設定します。ファイル使用状況を追跡して、特定のファイルがどのコンテンツで使用されているかを監査します。

ヘッドレスDrupalメディアAPI

HAL/RESTノーマライザーを使用してREST API経由でファイルエンティティを公開します。ファイルコンテンツは転送用に自動的にbase64エンコードされます。フロントエンドアプリケーションはAPI経由でbase64エンコードされたコンテンツを投稿してファイルをアップロードできます。

アーカイブからの一括ファイルインポート

アーカイブアップロード機能を使用して、複数のファイルを一度にインポートします。画像を含むZIPファイルをアップロードすると、File Entityが正規表現パターンに一致するすべてのファイルを展開し、自動タイプ分類を行いながら各ファイルの個別ファイルエンティティを作成します。

Tips

  • [file:field_image_alt_text:value]のようなTokenパターンを使用して、画像に動的altテキストを設定し、アクセシビリティとSEOを向上させてください。
  • 特定の用途(例:'ポッドキャスト'、'インフォグラフィック')向けに専用のフィールドとパーミッションを持つカスタムファイルタイプを作成してください。
  • ファイル設定の'スキップ'オプションを使用して、単一のファイルタイプや保存場所のみを持つサイトのアップロードウィザードを効率化してください。
  • ファイル/画像フィールドで'編集可能なファイル'ウィジェットを設定すると、親エンティティフォームを離れずにインライン編集ができます。
  • /file/{fid}/usageのファイル使用状況ビューを活用して、削除前にファイルがどこで使用されているかを監査してください。
  • パフォーマンス向上のため、カスタムのプリプロセスではなく'ファイルサイズ'フォーマッターを使用してファイルサイズを表示してください。
  • レスポンシブ画像を使用する場合、フォーマッター設定で選択する前にレスポンシブ画像スタイルが設定されていることを確認してください。

Technical Details

Admin Pages 11
ファイルタイプ /admin/structure/file-types

サイト上のファイルを整理・分類するために使用するファイルタイプ(バンドル)を管理します。各ファイルタイプは特定のMIMEタイプに一致させ、独自のカスタムフィールドセットを持つことができます。

ファイルタイプを追加 /admin/structure/file-types/add

ラベル、マシン名、説明、関連するMIMEタイプを定義して新しいファイルタイプを作成します。

ファイルタイプを編集 /admin/structure/file-types/manage/{file_type}/edit

既存のファイルタイプのラベル、説明、MIMEタイプ関連付けを含む設定を変更します。

ファイル設定 /admin/config/media/file-settings

アップロード制限、許可される拡張子、デフォルトのalt/title属性、アップロードウィザードの動作を含むグローバルなファイルエンティティ設定を行います。

ファイル /admin/content/files

サイトにアップロードされたすべてのファイルの表示、管理、一括操作を行います。ファイル名、MIMEタイプ、ステータス、ファイルタイプでフィルタリングできます。

ファイルを追加 /file/add

ファイルアップロード用のマルチステップウィザード。ステップには、ファイルアップロード、ファイルタイプ選択(複数のタイプが一致する場合)、保存先スキーム選択(複数のスキームが利用可能な場合)、追加フィールド設定が含まれます。

アーカイブをアップロード /admin/content/files/archive

アーカイブファイル(ZIP、TARなど)をアップロードして展開し、複数のファイルエンティティを一度に作成します。

ファイルを表示 /file/{file}

ファイルタイプに設定された表示モードを使用してファイルエンティティをレンダリングして表示します。

ファイルを編集 /file/{file}/edit

ファイルエンティティのフィールドを編集し、必要に応じて新しいアップロードでファイルを置き換えます。

ファイル使用状況 /file/{file}/usage

このファイルを参照しているすべてのエンティティを表示します。エンティティのラベル、エンティティタイプ、登録モジュール、使用回数が表示されます。

ファイルをダウンロード /file/{file}/download

適切なヘッダーとセキュアなダウンロード用のオプションのHMACトークン検証を使用してファイルをダウンロードします。

権限 14
ファイルアクセス制御をバイパス

パーミッション制限に関係なく、すべてのファイルを表示、編集、削除できます。警告: 信頼できるロールにのみ付与してください。

ファイルタイプを管理

ファイルタイプの作成、編集、有効化、無効化、削除ができます。警告: 信頼できるロールにのみ付与してください。

ファイルを管理

設定を含むすべてのファイルへの完全な管理アクセス。警告: 信頼できるロールにのみ付与してください。

新しいファイルを追加・アップロード

ユーザーがファイル追加フォームから新しいファイルをアップロードできるようにします。

自分のプライベートファイルを表示

現在のユーザーがアップロードしたプライベートファイルを表示します。

自分のファイルを表示

ストリームラッパーに関係なく、現在のユーザーがアップロードしたファイルを表示します。

プライベートファイルを表示

所有者に関係なく、すべてのプライベートファイルを表示します。警告: 信頼できるロールにのみ付与してください。

ファイルを表示

すべてのパブリックファイルを表示します。モジュールインストール時にすべてのロールに付与されます。

自分の[タイプ]ファイルを編集

現在のユーザーがアップロードした特定のタイプのファイルを編集します。各ファイルタイプに対して動的に生成されます。

すべての[タイプ]ファイルを編集

所有者に関係なく、特定のタイプのすべてのファイルを編集します。各ファイルタイプに対して動的に生成されます。

自分の[タイプ]ファイルを削除

現在のユーザーがアップロードした特定のタイプのファイルを削除します。各ファイルタイプに対して動的に生成されます。

すべての[タイプ]ファイルを削除

所有者に関係なく、特定のタイプのすべてのファイルを削除します。各ファイルタイプに対して動的に生成されます。

自分の[タイプ]ファイルをダウンロード

現在のユーザーがアップロードした特定のタイプのファイルをダウンロードします。各ファイルタイプに対して動的に生成されます。

すべての[タイプ]ファイルをダウンロード

所有者に関係なく、特定のタイプのすべてのファイルをダウンロードします。各ファイルタイプに対して動的に生成されます。

Hooks 7
hook_file_type

カスタムロジックに基づいて、ファイルエンティティに割り当てるファイルタイプ(バンドル)を決定します。

hook_file_type_alter

ファイルに割り当て可能なファイルタイプのリストを変更し、タイプ割り当ての優先順位を調整できます。

hook_file_download_headers_alter

ファイルダウンロード時に送信されるHTTPヘッダーを変更します。

hook_file_transfer

ファイルがダウンロード/転送されたときに反応します。リダイレクトやログ記録に便利です。

hook_file_metadata_info

ファイルエンティティ用のメタデータ情報を提供します。

hook_file_metadata_info_alter

他のモジュールで定義されたメタデータ情報を変更します。

hook_query_file_entity_access_alter

データベースクエリを変更することで、ファイル一覧へのアクセスを制御します。

Troubleshooting 5
インストール後、既存のファイルのタイプが'undefined'と表示される

cronを実行してファイルタイプ判定キューを処理してください。インストール中、既存のファイルは分類のためにキューに入れられます。レポート > サイトの状態で残りのキュー項目を確認してください。

ファイルが期待されるファイルタイプに分類されない

管理画面 > サイト構築 > ファイルタイプで各ファイルタイプに設定されているMIMEタイプパターンを確認してください。アップロードされたファイルのMIMEタイプがパターンの1つに一致することを確認してください。より広範な一致にはワイルドカード(例:image/*)を使用してください。

プライベートファイルのダウンロード時にパーミッション拒否

ユーザーが適切な'すべての[タイプ]ファイルをダウンロード'または'自分の[タイプ]ファイルをダウンロード'パーミッションを持っていることを確認してください。また、プライベートストリームラッパーアクセス用の'プライベートファイルを表示'パーミッションも確認してください。

画像のalt/titleが表示されない

Tokenモジュールがインストールされていることを確認し、管理画面 > 環境設定 > メディア > ファイル設定でalt/titleのTokenパターンを設定してください。画像の場合、画像ファイルタイプにfield_image_alt_textとfield_image_title_textフィールドを作成してください。

ファイル置換が機能しない

ファイル置換は書き込み可能なストリームラッパーに保存されているファイルでのみ機能します。ファイルがローカルストリームラッパーを使用しているか確認してください。リモートまたは読み取り専用のストリームラッパーはファイル置換をサポートしていません。

Security Notes 5
  • 'ファイルアクセス制御をバイパス'パーミッションは、すべてのファイルアクセス制限をバイパスするため、完全に信頼できる管理者ロールにのみ付与してください。
  • プライベートファイルはストリームラッパーアクセスチェックで保護されています。プライベートファイルの表示とダウンロードに適切なパーミッションが設定されていることを確認してください。
  • ファイルダウンロードにはデフォルトでHMACトークン検証が含まれています。特に必要でない限り、'allow_insecure_download'を有効にしないでください。
  • ファイルタイプのパーミッションを慎重に確認してください - タイプ固有のパーミッションにより、特定のタイプのファイルを誰が編集、削除、ダウンロードできるかを詳細に制御できます。
  • アーカイブアップロード機能には注意してください - 展開されたファイルからの潜在的なセキュリティ問題を防ぐため、信頼できるユーザーのみがアクセスできるようにしてください。