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

fusic/filebinderからの移行 ​

このパッケージはfusic/filebinderを置き換えます。プラグイン名、設定、保存されるデータ、URLは変わりません。変わったのは一部の動作で、主にS3のストレージとloaderです。

修正の一覧はCHANGELOGを参照してください。

移行の手順 ​

パッケージを入れ替えます。

bash
composer remove fusic/filebinder
composer require pieceofcake2/filebinder

S3のストレージを使っている場合は、S3クライアントのプラグインもインストールします。AsyncAwsを使う場合は次のとおりです。

bash
composer require pieceofcake2/async-aws async-aws/simple-s3

AWS SDK for PHPを使う場合は次のとおりです。

bash
composer require pieceofcake2/aws

CakePlugin::load('AsyncAws')かCakePlugin::load('Aws')でプラグインを読み込みます。S3クライアントのインストールを参照してください。

次に、Filebinder.S3.key、Filebinder.S3.secret、Filebinder.S3.regionに書いていた認証情報とリージョンを、プラグインのAsyncAwsかAwsの設定に移します。IAMロールなどのデフォルトの認証情報を使ってもかまいません。古い設定も動作し、プラグインの設定より優先されますが、非推奨です。クライアントの設定を参照してください。

S3のストレージ ​

  • S3のストレージには、pieceofcake2/async-awsかpieceofcake2/awsが必要です。プラグインをインストールし、CakePlugin::load()で読み込んでください。AWS SDKだけでは使えません。
  • クライアントのプラグインがないと、S3にファイルを保存するときにFilebinderS3StorageExceptionが発生します。以前は、ビヘイビアがファイルをローカルに保存し、アップロードしないままafterSave()がfalseを返していました。
  • Filebinder.S3.keyとFilebinder.S3.secretがなくても、ビヘイビアはプラグインの設定の認証情報か、デフォルトの認証情報でファイルをアップロードします。以前はアップロードしませんでした。
  • フィールドのregionを、そのフィールドのすべてのS3リクエストで使います。
  • アップロード中にS3でエラーが起きると、SDKの元の例外が発生します。
  • S3から復元したファイルにfileModeを設定します。
  • S3に置くファイルのContent-Typeは、ファイルの内容から決まります。以前のAWS SDKでは拡張子から決まっていました。

LabelヘルパーのS3のURL ​

  • S3オプションで出力するS3のURLは、S3クライアントが組み立てます。URLはhttpsで、設定のリージョンやエンドポイントを使います。たとえば、http://<bucket>.s3.amazonaws.com/...だったURLがhttps://<bucket>.s3.<region>.amazonaws.com/...になります。
  • sslオプションは使わなくなりました。
  • S3のURLには、S3クライアントのプラグインが必要です。バケットがなければURLはnullになります。
  • S3のURLには、フィールドのバケット、urlPrefix、リージョンを使います。
  • フィールドのACLかFilebinder.S3.aclがprivateなどの非公開のACLなら、URLは署名付きになります。

loader ​

  • loaderのURLのキーは、Security.saltを使ったHMACになりました。署名にはセッションとファイル名も含まれます。loaderによるファイルの保護を参照してください。
  • 移行前に作られたloaderのURLは使えなくなります。有効期間はFilebinder.expireで決まり、デフォルトでは1分と短いので、そのURLを表示しているページを再読み込みしてください。
  • URLは、それを出力したセッションでだけ使えます。
  • モデルIDが0のアップロードされたファイルについては、loaderはtmpディレクトリの中のファイルだけを送ります。
  • Content-Dispositionヘッダーでは、引用符で囲んだファイル名から引用符と制御文字を取り除きます。ファイル名全体はfilename*に入れます。
  • loaderは、どのブラウザにもファイルを添付ファイルとして送ります。以前はMSIEにだけ、Shift_JISのファイル名を付けてinlineで送っていました。
  • loaderはX-Content-Type-Options: nosniffを送ります。

コンテンツタイプとバリデーション ​

  • file_content_typeは、アップロードされたファイルの内容から判定します。そのため、保存される値とcheckContentTypeが調べる値が、ブラウザが送ったタイプと違うことがあります。
  • funcCheckFileは、ファイルが存在しないと関数を呼ばずに失敗します。
  • '1mb'のように小文字の単位で書いたファイルサイズを、その単位どおりに解釈します。以前はキロバイトとして解釈していました。

削除された設定と非推奨の設定 ​

設定状態
Filebinder.secret使わなくなりました。設定から削除してください。
LabelヘルパーのsessionKey使わなくなり、指定しても無視します。
Filebinder.S3.key、Filebinder.S3.secret非推奨。プラグインの設定かデフォルトの認証情報を使ってください。
Filebinder.S3.region非推奨。プラグインの設定でregionを指定してください。

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