when i try to submit my file i get error > Fatal error: Call to undefined function finfo_open() in C:\xampp\htdocs\Test\file_insert.php on line 49

My Code for Insert.php is:

<head><title>File Insert</title></head>
<h3>Please Choose a File and click Submit</h3>

<form enctype="multipart/form-data" action=
"<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="10000000" />
<input name="userfile" type="file" />
<input type="submit" value="Submit" />


// check if a file was submitted
    echo '<p>Please select a file</p>';
    try {
    $msg= upload();  //this will upload your image
    echo $msg;  //Message showing success or failure.
    catch(Exception $e) {
    echo $e->getMessage();
    echo 'Sorry, could not upload file';

// the upload function

function upload() {
    include "file_constants.php";
    $maxsize = 10000000; //set to approx 10 MB

    //check associated error code
    if($_FILES['userfile']['error']==UPLOAD_ERR_OK) {

        //check whether file is uploaded with HTTP POST
        if(is_uploaded_file($_FILES['userfile']['tmp_name'])) {    

            //checks size of uploaded image on server side
            if( $_FILES['userfile']['size'] < $maxsize) {  

               //checks whether uploaded file is of image type
              //if(strpos(mime_content_type($_FILES['userfile']['tmp_name']),"image")===0) {
                 $finfo = finfo_open(FILEINFO_MIME_TYPE);
                if(strpos(finfo_file($finfo, $_FILES['userfile']['tmp_name']),"image")===0) {    

                    // prepare the image for insertion
                    $imgData =addslashes (file_get_contents($_FILES['userfile']['tmp_name']));

                    // put the image in the db...
                    // database connection
                    mysql_connect($host, $user, $pass) OR DIE (mysql_error());

                    // select the db
                    mysql_select_db ($db) OR DIE ("Unable to select db".mysql_error());

                    // our sql query
                    $sql = "INSERT INTO test_image
                    (image, name)
                    ('{$imgData}', '{$_FILES['userfile']['name']}');";

                    // insert the image
                    mysql_query($sql) or die("Error in Query: " . mysql_error());
                    $msg='<p>Image successfully saved in database with id ='. mysql_insert_id().' </p>';
                    $msg="<p>Uploaded file is not an image.</p>";
             else {
                // if the file is not less than the maximum allowed, print an error
                $msg='<div>File exceeds the Maximum File limit</div>
                <div>Maximum File limit is '.$maxsize.' bytes</div>
                <div>File '.$_FILES['userfile']['name'].' is '.$_FILES['userfile']['size'].
                ' bytes</div><hr />';
            $msg="File not uploaded successfully.";

    else {
        $msg= file_upload_error_message($_FILES['userfile']['error']);
    return $msg;

// Function to return error message based on error code

function file_upload_error_message($error_code) {
    switch ($error_code) {
        case UPLOAD_ERR_INI_SIZE:
            return 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
        case UPLOAD_ERR_FORM_SIZE:
            return 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
        case UPLOAD_ERR_PARTIAL:
            return 'The uploaded file was only partially uploaded';
        case UPLOAD_ERR_NO_FILE:
            return 'No file was uploaded';
        case UPLOAD_ERR_NO_TMP_DIR:
            return 'Missing a temporary folder';
            return 'Failed to write file to disk';
            return 'File upload stopped by extension';
            return 'Unknown upload error';

Recommended Answers

All 8 Replies

Member Avatar

I take it that you're on Windows. If so, you may have to manually "switch it on" in php.ini.

I think it's a case of uncommenting:




I may be wrong though. Restart Apache too.



restrated many time but same result

Member Avatar

Are you using php or ??

upgrade your xampp to the latest version. Otherwise, you can use image_type_to_mime_type() function.

alrady upgated.

In php.ini search php_fileinfo.dll
You will find this:

Delete ; from front, save the file and close. Restart Apache server.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, learning, and sharing knowledge.