I have a "dilema" and wonder what is business best practice.
I'm using Uploadify to upload images. Now I need to validate the filename before saving the file.
I've looked at different solutions, but can't get down to one good solution.
Here are my criterias:
- Filename must be all in lowercase
- Filename can only contain charaters [a-z0-9_-]
- I must be able to rename file
How would you go about if a filename is my.file(name).jpeg
?
I could explode the filename on '.' and save the extension, then implode to get the filename again. But not sure if that's the best soltion.
I have the following functions that helps a bit:
function getExts($filename)
{
$exts = explode("[/\\.]", $filename) ;
$n = count($exts)-1;
$exts = $exts[$n];
return $exts;
}
function validFilename($filename)
{
$filename = str_replace(" ", "_", $filename);
$pattern = "/[^[a-z0-9_-]/";
return preg_replace($pattern, "", strtolower($filename));
}
UPDATE 1
I'm recieving the file through $_FILES. This gives me the following data:
- $_FILES["file"]["name"] - the name of the uploaded file
- $_FILES["file"]["type"] - the type of the uploaded file
- $_FILES["file"]["size"] - the size in bytes of the uploaded file
- $_FILES["file"]["tmp_name"] - the name of the temporary copy of the file stored on the server
- $_FILES["file"]["error"] - the error code resulting from the file upload
UPDATE 2
I just found something. I could use getimagesize which will return an array of 7 elements. One of these elements [2] is IMAGETYPE_XXX.
So I try using this code:
function getExts2($filename)
{
list(,,$type) = getimagesize($filename);
return $type;
}
But it only returns the number 2...
(I also tried using exif_imagetype, but it only get PHP Error: Call to undefined function.)