Search code examples
phpfilecsvuploadpathinfo

How to check for the correct file extension in PHP?


So basically, I am simply just trying to check for the correct file extension on a file that is being uploaded.

I know, this question has been answered on here a few times before, although I keep getting the same error and there is no solution or suggestions out there to why this is happening.

Here is my code:

$file = fopen($_FILES['upload_csv']['tmp_name'], 'r');
$ext = pathinfo($file, PATHINFO_EXTENSION);

if($ext != "csv")
{
    $errors[] = "Sorry, but only CSV files are supported";
}

Here is my error:

Warning: pathinfo() expects parameter 1 to be string

I have tried around 3 other alternatives now, all using pathinfo(). Although, the exact same error is still shown.

Does anyone have any suggestions to why this is happening?


Solution

  • Your problem is here:

    $file = fopen($_FILES['upload_csv']['tmp_name'], 'r');
    $ext = pathinfo($file, PATHINFO_EXTENSION);
    

    fopen returns a file handle for use reading and writing a file, but pathinfo is expecting a string containing a filename (optionally, with a path), but you're giving it a file handle.

    You should, in any case, be looking at $_FILES['upload_csv']['name'], which is the original name of the file, and extracting the file extension from that.