2014-09-27 29 views
10

Ben php için yeni, sql veritabanı görüntüleri yüklemek için kod oluşturduk ve php kullanarak görüntüyü almak. Önemli Hata: Tanımlanmamış işlev çağrısı finfo_open() php içinde

<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> 

Şimdi ben hata, Ölümcül hata var: Bu hatta tanımsız fonksiyon finfo_open çağır()

$finfo = finfo_open(FILEINFO_MIME_TYPE); . 

birileri bunu düzeltmek bana yardımcı olabilir

İşte benim kodudur.

Şimdiden teşekkürler.

+0

finfo_open sadece php için kullan> 5.3.0 http://www.php.net/manual/en/function.finfo-open.php. Sunucunuzun php_info() ile güncel olup olmadığını iki kez kontrol etmek isteyebilirsiniz. Bu bağlantı size yardımcı olabilir: http://stackoverflow.com/questions/21293996/wordpress-plugin-call-to-undefined-function-finfo-open – Jinandra

+0

ok teşekkürler @sanki –

+0

@ sanki: linkten, kaldır şunu Bu satır "extension = php_fileinfo.dll" olan noktalı virgül php.ini dosyası ama yine de hata görüntüleniyor –

cevap

12

Aynı sorun IIS'de PHP'de de vardı.

;extension=fileinfo.so veya ;extension=php_fileinfo.dll

benzer bir satır olmalıdır: Eğer fileinfo.so veya php_fileinfo.dll PHP ve OS platform ve sürümüne bağlıdır şöyle php.ini, etkin olduğundan emin olun

noktalı ; çıkarın (ni o)

extension=fileinfo.so veya extension=php_fileinfo.dll

Ardından, apache, nginx, IIS veya kullandığınız web sunucusunu kaydedin ve yeniden başlatın.

Bu işe yaramazsa, fileinfo uzantısının zaten yüklü olduğundan emin olun.

İlgili konular