Hi,
I try to make a simple page to upload an image in Database. This is a test page in my website at this moment.
The name of the table to store the images is image and the columns are: id, userid, name, image
My problem is when I click the submit button, the page show me this error:
Fatal error: Call to undefined function finfo_open() in /home/rwxypejp/public_html/diary/imgupload/addimage.php on line 53
Can anyone help me to solve this error please?
This is the code I use for this page:
<?php
require("../headerloggedin.php");
?>
<div id="content">
<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="idofuser" value="<?php echo $userid; ?>" />
<input type="hidden" name="MAX_FILE_SIZE" value="10000000" />
<input name="userfile" type="file" />
<br />
<input type="submit" value="Submit" />
</form>
<?php
// check if a file was submitted
if(!isset($_FILES['userfile']))
{
echo '<p>Please select a file</p>';
}
else
{
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()
{
//require "../dbconnection/connection.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']));
//get the userid
$userid = $_POST["idofuser"];
// our sql query
$sql = "INSERT INTO image(image, name, userid) VALUES ('{$imgData}','{$_FILES['userfile']['name']}','{$userid}');";
// 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>';
}
else
$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 />';
}
}
else
$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';
case UPLOAD_ERR_CANT_WRITE:
return 'Failed to write file to disk';
case UPLOAD_ERR_EXTENSION:
return 'File upload stopped by extension';
default:
return 'Unknown upload error';
}
}
?>
<br />
<a id="buttonlink" href="../indexloggedin.php">Click here</a> to go in homepage.
</div>
<?php require("../footerloggedin.php"); ?>
Thanks for your help!!