ドキュメント
リリースカレンダー
リンク
SourceForge.jp SourceForge.JPへ
php.net PHP公式サイトへ
TOP  >  ドキュメント > 機能(フレームワーク依存)  >  ファイルアップロード

ファイルアップロード

 ファイルのアップロードは、クライアント側からサーバー側にファイルをアップロードできる機能です。  SyLフレームワークでは、セッション同様インターフェイスを統一するためにPHPの標準機能をラップしたクラスを用意しています。

1. アップロードに関するコード例

ファイルアップロード処理をセットしたり、取得する簡易インターフェイスの使用例です。

// コンテキストからリクエストオブジェクトを取得
$request =& $context->getRequest();

// アップロードされたファイル情報を取得する。
// <input type="file" name="uploadfile" >とした場合、
// この例では、$_FILES['uploadfile']と同じ値が取得できる
$uploadfile = $request->getFile('uploadfile');

ただし、上記例ではアップロードされたファイルは一時ディレクトリにある状態で、そこから コピーや移動しない限り、リクエスト終了時に削除されてしまします。

アップロードされたファイルを任意のディレクトリに移動するには、 下記のようにします。

// コンテキストからリクエストオブジェクトを取得
$request =& $context->getRequest();
// ファイルオブジェクトを取得する
$file =& $request->getFileObject();

if ($file->isError()) {
    // アップロード初期エラー
    echo $file->getErrorMessage('uploadfile');
    exit;
}

// アップロードファイルを保存するディレクトリ
// ※デフォルトで、SYL_UPLOAD_DIR 定数以下となる
$file->setUploadDir('upload_dir');

// アップロードファイル保存処理
if (!$file->upload('uploadfile')) {
    // アップロードファイル保存時エラー
    echo $file->getErrorMessage('uploadfile');
    exit;
}

// ----------

// アップロードされたファイル情報を取得する(上の処理と同様)
$uploadfile = $file->get('uploadfile');
print_r($uploadfile);

2. アップロードディレクトリ

 アップロードファイルを保存するディレクトリは、setUploadDirメソッドで設定しますが、 デフォルトでSYL_UPLOAD_DIR 定数以下となります。

例えば、SYL_UPLOAD_DIR = /home/hoge/data の場合、
  $file->setUploadDir('upload_dir');
を行うと、保存するディレクトリは、
  /home/hoge/data/upload_dir
となります。
 setUploadDirメソッドを実行しなければ、SYL_UPLOAD_DIR ディレクトリに保存されます。

このように、デフォルトではSYL_UPLOAD_DIR ディレクトリ以下にしか保存できませんが、 引数を変更することにより、絶対パスで指定した任意のディレクトリに保存できます。
  $file->setUploadDir('/path/to/savedir', true);