Im trying to determine the mime-type of an uploaded file, i want to use fileinfo(), this is what ive been trying, it isnt working:
$uploadedfile = $_FILES['soup']['tmp_name'];
if(isset($uploadedfile))
{
$uploadedname = $_FILES['soup']['name'];
$file=$uploadedsong;
$file.=$uploadedname;
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $file);
Unfortunately the finfo_file
doesnt seem to be running, Im assuming i have the following $file
set incorrectly for this, is there a way i can do this properly with a newly uploaded file using $_FILE
like this? or am i going at this problem the completely improper way. Using a file i have pre-set in another directly, and setting $file="folder/file.doc"
works properly.
You should be passing the path to the finfo_file function not the filename.
I use the
finfo()
buffer()
function as well asfile_get_contents()
from the php platform as belowyou need to be on
php 5.3
or higher and make sure you have thefinfo()
extension installed. for linuxextension=fileinfo
. and in windows:php_fileinfo.dll
you can have an array of accepted mime types and then check if it exists in that array
Another alternative to avoid having to check mime types would be to store file uploads completely out of the document root folder.
I know this is a bit old, but since you're using the
$_FILES
super global, can you use the type key of the file array (i.e.$_FILES['soup']['type']
) rather than having the server check once the file is uploaded?