XOOPSの標準クラスのテーマフォームを使用してフォームの作成を行う場合のサンプルを例示します。主に管理画面等でフォームが必要になった場合に使います。今回はその中でも、ファイルのアップロードが必要になった場合のフォーム作成方法についての解説です。
$form = new XoopsThemeForm(_AD_MULTIMENU_EDITIMENU, "editform", "index.php");
$form->setExtra('enctype="multipart/form-data"');
$formFile = new XoopsFormFile(_AD_MULTIMENU_FILE, "uploade_file_name", 500000);
$form->addElement($formFile, false);
$form->addElement($submit_button);
$form->display();
1行目:フォームタグの名前とPOST先を設定
2行目:アップロードするのでformタグにマルチパートを指定
3行目:アップロード用のフォームを作成(第2=タグ名、第3=ファイル上限サイズ)
4行目:フォームに作成したエレメントを追加
5行目:サブミットボタン追加
6行目:フォーム描画実行
POST先の処理例
if ($_FILES) {
include_once XOOPS_ROOT_PATH . '/class/uploader.php';
$allowed_mimetypes = array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/x-png', 'image/png');
$maxfilesize = 500000;
$maxfilewidth = 120;
$maxfileheight = 120;
$uploader = new XoopsMediaUploader(XOOPS_ROOT_PATH . '/modules/multimenu/images', $allowed_mimetypes, $maxfilesize, $maxfilewidth, $maxfileheight);
if ($uploader->fetchMedia('uploade_file_name')) {
if (!$uploader->upload()) {
echo $uploader->getErrors();
} else {
$_POST['image'] = $uploader->getSavedFileName();
echo '<h4>File uploaded successfully!</h4>';
echo 'Saved as: ' . $uploader->getSavedFileName() . '<br />';
echo 'Full path: ' . $uploader->getSavedDestination();
}
} else {
echo $uploader->getErrors();
}
}
$_FILES が設定されていればコアの uploader.php を使って処理します。