Upload ドキュメント
Upload プラグインは、MeioUpload、 UploadPack などのパッケージや PHP のドキュメント から集めた手法を使って、 ファイルをまっとうにアップロードしようという試みです。
pieceofcake2/upload は、pieceofcake2/cakephp 向けの josegonzalez/cakephp-upload (2.x ブランチ) の フォークです。josegonzalez/cakephp-upload パッケージを置き換えます。このドキュメントは オリジナルのドキュメント をもとにしています。
はじめに
このプラグインでできること
- Upload プラグインは、アプリケーションのフォームから送信されたファイルを、(デフォルトでは)
webroot/filesディレクトリに、モデル名と primaryKey フィールドごとに整理して転送します。 - ファイルシステムからなど、プログラムでファイルを移動することもできます。
- ファイルを保存するパスはカスタマイズできます。
- ビヘイビアのオプションで
thumbnailSizesオプションを設定すると、画像ファイルのサムネイルも作成できます。 - 複数のファイルを、別々のフィールドに同時にアップロードすることもできます。
- アップロードのフィールドは、アップロード先のパスやサムネイルのオプションなど、それぞれ独立して設定できます。
- アップロードしたファイルの情報は、MySQL データベースなどのデータストアに保存できます。
- よくあるルールでのバリデーションに役立つ、さまざまなバリデーションルールが用意されています。
このプラグインでできないこと
- ファイル形式の変換はしません。JPG を PNG に変換するといった用途には使えません。
- 画像に透かしを入れることはしません。
背景
オリジナルの作者より: Media Plugin は複雑すぎるし、MeioUpload に最新の更新をマージするのは 本当に面倒だったので、こうしてまた別のアップロードプラグインを作っています。1 か月後にはまた別のものを 作って、"YAUP" と名付けるでしょう。
インストール
要件
- PHP 8.0+
- pieceofcake2/cakephp 2.12+
- GD または Imagick の PHP 拡張モジュール (サムネイルの作成に必要)
Composer を使う
composer require pieceofcake2/uploadプラグインのタイプは cakephp-plugin なので、composer/installers によってプラグインディレクトリに インストールされます。アプリケーションの composer.json では、composer/installers プラグインを 許可し、installer-paths を設定する 必要があります。そうしないと、CakePlugin::load() が 見つけられるディレクトリにプラグインがインストールされません。
{
"config": {
"allow-plugins": {
"composer/installers": true
}
},
"extra": {
"installer-paths": {
"plugins/{$name}/": ["type:cakephp-plugin"]
}
}
}| レイアウト | installer-paths |
|---|---|
モダン (config/、src/、templates/、plugins/) | "plugins/{$name}/": ["type:cakephp-plugin"] |
レガシー (app/Config/、app/Plugin/) | "app/Plugin/{$name}/": ["type:cakephp-plugin"] |
/plugins/Upload (レガシーレイアウトでは /app/Plugin/Upload) を .gitignore ファイルに追加することを お勧めします。(理由は こちら を読んでください。)
手動
- これをダウンロードします: https://github.com/pieceofcake2/upload/archive/2.x.zip
- ダウンロードしたファイルを展開します。
- できたフォルダを
plugins(レガシーレイアウトではapp/Plugin) にコピーします - コピーしたフォルダの名前を
Uploadに変更します
Git Clone
plugins ディレクトリ (レガシーレイアウトでは app/Plugin) で次のように入力します。
git clone -b 2.x https://github.com/pieceofcake2/upload.git UploadImagick のサポート
Imagick のサポートを有効にするには、Imagick がインストールされている 必要があります。
# Debian systems
sudo apt-get install php-imagick
# From pecl
pecl install imagickImagick をインストールできない場合は、代わりにフィールドのオプションで 'thumbnailMethod' => 'php' (GD) を設定してください。
プラグインの有効化
config/bootstrap.php (レガシーレイアウトでは app/Config/bootstrap.php) ファイルでプラグインを 有効にします。
CakePlugin::load('Upload');すでに CakePlugin::loadAll(); を使っている場合は不要です。
使い方
class User extends AppModel
{
public $actsAs = [
'Upload.Upload' => [
'photo' => [
'thumbnailMethod' => 'php',
'thumbnailSizes' => [
'thumb' => '80x80',
],
],
],
];
}デフォルトでは、ファイルは {ROOT}webroot{DS}files{DS}{model}{DS}{field}{DS} に保存されます。 {ROOT} は rootDir オプションです。rootDir のデフォルトは WWW_ROOT の親ディレクトリなので、 モダンレイアウト (webroot/) でもレガシーレイアウト (app/webroot/) でも、ファイルは webroot に 保存されます。
Imagick 拡張モジュールがインストールされていない場合は、'thumbnailMethod' => 'php' (GD) を 使ってください。
その他のドキュメント
由来
このパッケージは FriendsOfCake/cakephp-upload (Packagist では josegonzalez/cakephp-upload、アップストリームの最終バージョンは 1.3.1) の メンテナンスされたフォークで、元の作者は Jose Diaz-Gonzalez です。 pieceofcake2 が、モダンな PHP で動く CakePHP 2 向けに メンテナンスしています。オリジナルからの変更点は フォーク以降のコミット履歴 で確認できます。
