CakePHP でファイルアップロードを簡単に行うコンポーネントです。
ReverseFolds – CakePHP File Uploads

データベースにファイル名、MIMEタイプ、サイズなどを記録し、ファイルは指定したディレクトリへアップロードするようになっています。

ビューにファイルアップロード用のタグを設置

<input type='file' name='userfile[]'/>
複数配置したいときは

<input type='file' name='userfile[]'/>
<input type='file' name='userfile[]'/>

コントローラに使用するコンポーネントを追加

var $components = array('FileHandler');

アップロード処理

$this->FileHandler->setDebugLevel(1);
$this->FileHandler->setRequired(0);
$this->FileHandler->setHandlerType('db');
$this->FileHandler->setDbModel('FileUpload');
$uploadDir = 'path/to';    // アップロードするディレクトリを指定
if ($this->FileHandler->upload('userfile', $uploadDir)) {
    echo 'アップロード成功';
} else {
    echo 'アップロード失敗';
}

実際の処理などはリンク先からダウンロードしたファイルにコンポーネントの他に、ビュー、コントローラ、モデル、SQL と必要なものは入っているのでソースを見てみるとすぐに分かると思います。

アップロードされるファイルは $uploadDir で指定したディレクトリ内にユニークなディレクトリ名を作成してそのディレクトリ内に元のファイル名で保存してくれます。

その他のメソッド

アップロードできるファイルタイプを限定するメソッド
void setAllowedMime( array $mimeTypes )

ファイルの最大容量を設定するメソッド
void setMaxSize( int $size )
などもあります。

関連する投稿