Я новичок в php, я создал код для загрузки изображений в базу данных sql и получения изображения с помощью php.
Вот мой код:
<html> <head><title>File Insert</title></head> <body> <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" /> </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() { include "mysqlconnect.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) VALUES ('{$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>'; } 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'; } } ?> </body> </html>
Теперь я получил ошибку, Fatal error: вызов неопределенной функции finfo_open () в этой строке
$finfo = finfo_open(FILEINFO_MIME_TYPE); .
Может ли кто-нибудь помочь мне исправить это.
Заранее спасибо.
У меня была такая же проблема с PHP на IIS. Убедитесь, что в php.ini включен php_fileinfo.dll
или php_fileinfo.dll
, который зависит от вашей платформы и версии PHP и ОС:
Должна быть строка, подобная
;extension=fileinfo.so
или ;extension=php_fileinfo.dll
удалите точку с запятой ;
(раскомментируйте это)
extension=fileinfo.so
или extension=php_fileinfo.dll
Затем сохраните и перезапустите apache, nginx, IIS или любой другой веб-сервер, который вы используете.
Если это не работает, убедитесь, что расширение fileinfo
уже установлено.