ファイルアップロードのサンプルモジュールです。
仕様
- 1回に3ファイル同時にアップロード可能
- アップロード可能なファイルは画像に限る(gif/jpg/png)
- アップロード可能なファイル容量は1ファイルにつき1MBまで
DEMO
http://lmd.root-n.com/demo/fileupload/
上記DEMOは、アプリケーションのルートディレクトリが /demo であり、モジュールグループは「fileupload」になります。
DOWNLOAD
fileupload モジュール一式をダウンロードできます。
- tar.gz: fileupload.tar.gz
- zip: fileupload.zip
※このモジュールは Windows に対応していません。
設置手順
- モジュール一式をダウンロードし、展開します。
- ファイルを所定の位置にアップロードします。
- モジュール
- fileupload/* ⇒ Lambda/apps/<APP_DIR>/fileupload/*
- ライブラリ
- libs/Upload.php ⇒ Lambda/libs/Upload.php
- アップロードされたファイルを格納するディレクトリを作成します。
- ディスパッチャ(index.php)がドキュメントルートにある場合
- /path/to/<DOCUMENT_ROOT>/upload
- ディスパッチャ(index.php)がドキュメントルートのサブディレクトリにある場合
- /path/to/<DOCUMENT_ROOT>/<APP_DIR>/upload
- 定数「FILEUPLOAD_DRYRUN」の設定変更
- ブラウザでアクセスして、動作確認を行います。
- http://<DOMAIN>/fileupload/
fileupload/
+—fileupload/
| index.logic.php
| index.view.php
|
\—libs/
Upload.php
+—fileupload/
| index.logic.php
| index.view.php
|
\—libs/
Upload.php
本モジュールでは、ディスパッチャ(index.php)と同じ階層の「upload」というディレクトリに格納する仕様になっています。
※ 「upload」ディレクトリのパーミッションは「777」にしてください。
ポリシーに反する場合は、WEBサーバーが書き込みできる権限を与えてください。
Lambda/apps/<APP_DIR>/fileupload/index.logic.php
define('FILEUPLOAD_DRYRUN', 1);
↓
define('FILEUPLOAD_DRYRUN', 0);
↓
define('FILEUPLOAD_DRYRUN', 0);
1 から 0 に変更することで、実際にアップロードを行う設定になります。
プログラムコードの一部抜粋
プログラムコードを一部抜粋して掲載します。
下記は、DEMOで動作している、fileupload.index ロジックモジュラーのソースコードになります。
/path/to/Lambda/apps/<APP_DIR>/fileupload/index.logic.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | <?php /***************************************************************************** * * サンプルのため、冗長なコメントになっています。 * ****************************************************************************/ /** * サンプルのため、定数定義をこのファイル内に記述しています。 * 本来は、Lambda/apps/<APP_DIR>/app.conf.php に定義することが推奨されます。 */ // ドライラン: アップロードを行う = 0 | アップロードを行わない = 1 // // ※ サンプルのため、この定数を定義しています。本来は不要です。 // また、ロジックとビューでこの定数を参照しているステートメントも不要になります。 define('FILEUPLOAD_DRYRUN', 1); // アップロードされたファイルを格納するディレクトリ define('UPL_DIR', APP_DIR.'/upload'); // アップロードを許可する最大ファイルサイズ(1ファイルにつき)(単位:MB) define('IMAGE_MAX_SIZE', 1); /** * ジャバスクリプトライブラリのロード * * ジャバスクリプトライブラリは、Lambda/libs/Javascript.php にあります。 * * [tips] * よく使うライブラリは、Lambda/apps/<APP_DIR>/app.init.php で事前にロードしておくとよい。 */ Factory::import('Javascript'); if ( ! $lmd->hasHttpPost('upload')) { /** * 【アップロードする】ボタンが押されていない。 * * ⇒ デフォルト画面に遷移させる。 * * ※ ガード節 */ return $lmd->setPrep('fileupload.index'); } /** * パラメータを定義 * * array('フィールドラベル', '最大ファイルサイズ', '単位', '許可するファイル拡張子の正規表現') */ $params = array(); $params['image'][1] = array('画像1', IMAGE_MAX_SIZE, 'MB', '/^(gif|jpe?g|png)$/i'); $params['image'][2] = array('画像2', IMAGE_MAX_SIZE, 'MB', '/^(gif|jpe?g|png)$/i'); $params['image'][3] = array('画像3', IMAGE_MAX_SIZE, 'MB', '/^(gif|jpe?g|png)$/i'); /** * アップロードライブラリをロード/インスタンス化して、アップロード対象ディレクトリを指定する。 */ $upload = Factory::load('Upload')->getInstance($params)->setUploadDir(UPL_DIR); /** * アップロード実行 */ $res = true; if ( ! FILEUPLOAD_DRYRUN) { $res = $upload->execute(); } if ($res === false) { /** * アップロード失敗 */ Javascript::backHistory($upload->getErrMsg(), '#ffa07a'); } elseif (FILEUPLOAD_DRYRUN) { /** * ドライラン */ Javascript::redirect($lmd->httpRequestDir().'/', 'サンプルのため、アップロードしません'); } else { /** * アップロード成功 */ $lmd->redirect($lmd->httpRequestDir().'/'); } |
次ページ: データベース