Getting filename for upload using smarty?

Talk about writing modules and plugins for CMS Made Simple, or about specific core functionality. This board is for PHP programmers that are contributing to CMSMS not for site developers
Post Reply
jmansa
Forum Members
Forum Members
Posts: 126
Joined: Thu Oct 19, 2006 2:46 pm

Getting filename for upload using smarty?

Post by jmansa »

I'm trying to make my own customized uploadscript for a module I'm trying to make, but am running in to a problem.

I have a action.editsponsor.php, sponsor.tpl and action.do_editsponsor.php.

editsponsor:

Code: Select all

   [code] $this->smarty->assign ("startform",
			   $this->CreateFormStart ($id, 'do_editsponsor', $returnid));
    $this->smarty->assign ('submit',
			   $this->CreateInputSubmit ($id, 'submit', 'Submit'));
    $this->smarty->assign ('cancel',
			   $this->CreateInputSubmit ($id, 'cancel', 'Cancel'));
    $this->smarty->assign ('endform', $this->CreateFormEnd ());

    $this->smarty->assign( 'imagefile',
		                  $this->CreateFileUploadInput ($id,'imagefile'));
do_editsponsor:

Code: Select all

define ("MAX_SIZE","50000"); 

//This function reads the extension of the file. It is used to determine if the file is an image by checking the extension.
function getExtension($str) {
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}

$errors=0;
//checks if the form has been submitted
if(isset($params['submit'])) 
{
//reads the name of the file the user submitted for uploading
$image=$params['imagefile']['name'];
//if it is not empty
if ($image) 
{
//get the original name of the file from the clients machine
$filename = stripslashes($params['imagefile']['name']);
//get the extension of the file in a lower case format
$extension = getExtension($filename);
$extension = strtolower($extension);
//if it is not a known extension, we will suppose it is an error and will not upload the file, 
//otherwise we will do more tests
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) 
{
//print error message
echo '<h1>Unknown extension!</h1>';
$errors=1;
}
else
{
//get the size of the image in bytes
//$_FILES['image']['tmp_name'] is the temporary filename of the file
//in which the uploaded file was stored on the server
$size=filesize($params['imagefile']['tmp_name']);

//compare the size with the maxim size we defined and print error if bigger
if ($size > MAX_SIZE*1024)
{
echo '<h1>You have exceeded the size limit!</h1>';
$errors=1;
}

//Giving the new imagefile the old name
$image_name=$image;
//the new name will be containing the full path where will be stored (images folder)
$newname="images/".$image_name;
//we verify if the image has been uploaded, and print error instead
$copied = copy($params['imagefile']['tmp_name'], $newname);
if (!$copied) 
{
echo '<h1>Copy unsuccessfull!</h1>';
$errors=1;
}}}}

//If no errors registred, print the success message
if(isset($params['submit']) && !$errors) 
{
echo "File Uploaded Successfully!";
}
The problem is that doesnt get the filename... Everytime I run this I get the error "Unknown extension!"...

If I make this script in a seperate php file with a "normal" form it works great... What can be wrong?[/code]
Post Reply

Return to “Developers Discussion”