1
I found the following code snippet on this forum and it works but I just don't understand HOW it works. My question is with this line:
$field = $_POST["xoops_upload_file"][0] ;
Where does "xoops_upload_file" come from? It's not in the form code. What is it? Is it a XOOPS thing? And it still, when echoed to the browser, only shows the filename. The path component is missing. But it works, the file is uploaded to the images dir. This is really confounding me, it looks like magic! I would really like to understand this XoopsFormFile mechanism so I may use it with some confidence. Any help here is GREATLY appreciated. What piece of information am I missing?
Thanks
Doug P (Code below)
include("admin_header.php");
$op = 'form';
function form() {
include XOOPS_ROOT_PATH."/class/xoopsformloader.php";
$my_form = new XoopsThemeForm("Upload", "form", "index.php");
$my_form->setExtra( "enctype='multipart/form-data'" ) ;
$img_box = new XoopsFormFile("Image", "photo", $max_imgsize);
$img_box->setExtra( "size ='50'") ;
$my_form->addElement($img_box);
$button_tray = new XoopsFormElementTray('' ,'');
$button_tray->addElement(new XoopsFormButton('', 'post',"Submit", 'submit'));
$my_form->addElement($button_tray);
$my_form->display();
}
foreach ( $_POST as $k => $v ) {
${$k} = $v;
}
if ( isset($post) ) {
$op = 'post';
}
switch ($op) {
case "post":
$max_imgsize = 100000;
$max_imgwidth = 500;
$max_imgheight = 500;
$allowed_mimetypes = array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/x-png');
$img_dir = XOOPS_ROOT_PATH . "/modules/mymodule/images" ;
include_once(XOOPS_ROOT_PATH."/class/uploader.php");
$field = $_POST["xoops_upload_file"][0] ;
if( !empty( $field ) || $field != "" ) {
$uploader = new XoopsMediaUploader($img_dir, $allowed_mimetypes, $max_imgsize, $max_imgwidth, $max_imgheight);
$uploader->setPrefix( 'img' ) ;
if( $uploader->fetchMedia( $field ) && $uploader->upload() ) {
$photo=$uploader->getSavedFileName();
} else {
echo $uploader->getErrors();
}
}
break;
case 'form':
default:
xoops_cp_header();
form();
xoops_cp_footer();
break;
}
?>