Skip to content
これは pieceofcake2/filebinder のドキュメントです。pieceofcake2/cakephp 用の CakePHP 2.x プラグインです。 このフォークについて

設定 ​

Filebinderの設定は3種類あります。

ファイルのフィールド ​

$bindFieldsの要素1つが、ファイルのフィールド1つに対応します。1つのモデルに複数のファイルのフィールドを持たせることもできます。

php
public $bindFields = [
    ['field' => 'image', 'filePath' => WWW_ROOT . 'files' . DS],
    ['field' => 'document', 'filePath' => ROOT . DS . 'files' . DS],
];

各要素には次のキーを書けます。

キーデフォルト説明
fieldフィールドの名前。必須です。
tmpPathCACHERingComponent::bindUp()がアップロードされたファイルを移動するディレクトリ。
filePathビヘイビアのfilePath設定保存したファイルを置くディレクトリ。falseにするとローカルに保存しません。
bucketFilebinder.S3.bucketファイルを置くS3のバケット。
aclFilebinder.S3.acl、なければpublic-readS3に置くファイルの既定ACL。
urlPrefixFilebinder.S3.urlPrefixS3のキーの接頭辞。たとえばfiles/。
regionFilebinder.S3.region、なければプラグインの設定バケットのAWSリージョン。

S3のキーを使うのは、S3のストレージを使うときだけです。Amazon S3を参照してください。

ビヘイビアの設定 ​

ビヘイビアの設定は$actsAsで渡します。

php
public $actsAs = [
    'Filebinder.Bindable' => [
        'storage' => [BindableBehavior::STORAGE_DB, BindableBehavior::STORAGE_S3],
        'filePath' => WWW_ROOT . 'files' . DS,
    ],
];

ビヘイビアには次の設定があります。

設定デフォルト説明
model'Attachment'添付ファイルのテーブルのモデル。
filePathWWW_ROOT . 'img' . DSfilePathのないフィールドで、保存したファイルを置くディレクトリ。falseにするとローカルに保存しません。
storageBindableBehavior::STORAGE_DBローカルのファイルとは別に、ファイルのコピーを置く場所。値は下の表を参照してください。
restoreFromStoragetrueローカルのファイルがないときや、ファイルがレコードより古いときに、find()がストレージからファイルを復元します。
withObjectfalsefind()がファイルの内容をBase64でfile_objectに入れて返します。S3のストレージでは、データベースに内容がなければS3からダウンロードします。
exchangeFiletrue新しいファイルで差し替えたとき、古いファイルを削除します。falseにすると古いファイルのレコードだけを削除します。
beforeAttachnullアップロードされたファイルを保存する前に呼ぶコールバック。
afterAttachnullローカルに保存したファイルに対して呼ぶコールバック。
dirMode0755ビヘイビアが作るディレクトリのパーミッション。
fileMode0644ビヘイビアが保存、復元するファイルのパーミッション。
dbStorage古い設定です。trueかfalseを指定すると、データベースのストレージを使うかどうかを上書きします。

storageに指定できる値は次のとおりです。

値ストレージ
BindableBehavior::STORAGE_DB、つまり'Db'データベースのfile_objectカラム。
BindableBehavior::STORAGE_S3、つまり'S3'Amazon S3。
[BindableBehavior::STORAGE_DB, BindableBehavior::STORAGE_S3]両方。
falseなし。ローカルのファイルだけを残します。

ストレージごとの動き、ファイルの復元や差し替えについてはストレージで説明します。

コールバック ​

ビヘイビアは、アップロードされたファイルを保存する前に、そのパスを渡してbeforeAttachを呼びます。コールバックが偽とみなされる値を返すと、保存を中止します。

ビヘイビアは、ローカルに保存したファイルのパスを渡してafterAttachを呼びます。find()がローカルのファイルを復元したときも呼びます。コールバックが偽とみなされる値を返すと、afterSave()やfind()はそこで処理をやめます。

コールバックには次のいずれかを指定します。

  • 関数の名前
  • モデルのメソッドの名前
  • [$object, 'method']や['ClassName', 'method']のような呼び出し可能な配列

実行時に設定を変える ​

setSettings()は、モデルの現在の設定に新しい設定をマージします。

php
$this->Post->setSettings(['restoreFromStorage' => false]);

getSettings()は現在の設定を返します。

php
$settings = $this->Post->getSettings();

withObject()でwithObject設定を切り替えられます。

php
$this->Post->withObject(true);

アプリケーションの設定 ​

アプリケーションの設定はConfigure::write()で書きます。たとえばconfig/bootstrap.phpに次のように書きます。

php
Configure::write('Filebinder.expire', '+10 minutes');

次の設定があります。

設定デフォルト説明
Filebinder.expire'+1 minute'loaderのURLとS3の署名付きURLの有効期間。strtotime()の書式で指定します。
Filebinder.S3.client読み込んだプラグインのクライアントS3クライアント。'AsyncAws'か'Aws'を指定します。
Filebinder.S3.bucketbucketのないフィールドで使うS3のバケット。
Filebinder.S3.aclpublic-readaclのないフィールドで使う既定ACL。
Filebinder.S3.urlPrefixurlPrefixのないフィールドで使うS3のキーの接頭辞。
Filebinder.S3.region非推奨。regionのないフィールドで使うリージョン。
Filebinder.S3.key、Filebinder.S3.secret非推奨。AWSのアクセスキー。

S3の設定と非推奨の設定はAmazon S3で説明します。

Labelヘルパーとloaderには、アプリケーションのSecurity.saltも必要です。loaderによるファイルの保護を参照してください。

著作権とライセンスについては LICENSE を参照してください。Cake Software Foundation とは関係ありません。