2016-08-17 2 views
0

Der Fehler, dass ich, wenn ich versuche, es zu laden ist dieser Fehler:Warum kann nicht mein Bild hochgeladen und wenn es abrufen das Bild leer ist

Warning: file_get_contents(MTUtODAwLmpwZw==): failed to open stream: No such file or directory in C:\xampp\htdocs\miniproject\imageupload\image.php on line 24

Auch habe ich bereits ein eingefügtes Bild in meinem Datenbank und wenn es abgerufen wird, zeigen Sie nur ein Plank-Bild.

Dies ist mein Code

<?PHP 
ini_set('mysql.connect_timeout', 300); 
ini_set('default_socket_timeout', 300); 
?> 
<html> 
    <body> 
     <form method="post" enctype="multipart/form-data"> 
      <br/> 
      <input type="file" name="image"/> 
      <br/><br/> 
      <input type="submit" name="sumit" value="Upload"/> 
     </form> 
    <?php 
     if(isset($_POST['sumit'])) 
     { 
      if (getimagesize($_FILES['image']['tmp_name'])==FALSE) 
      { 
       echo "Please select an image."; 
      } 
      else 
      { 
       $image= addslashes($_FILES['image']['name']); 
       $name= addslashes($_FILES['image']['name']); 
       $image= file_get_contents($image); 
       $image= base64_encode($image); 
       saveimage($name, $image); 
      } 
     } 
     displayimage(); 
     function saveimage($name,$image) 
     { 
      $con= mysql_connect("localhost:3307", "root", ""); 
      mysql_select_db("kstark",$con); 
      $qry="insert into images (name, image) values ('$name','$image')"; 
      $result= mysql_query($qry,$con); 
      if ($result) 
      { 
       echo "<br/>Image uploaded."; 
      } 
      else 
      { 
       echo "<br/>Image not uploaded."; 
      } 
     } 
     function displayimage() 
     { 
      $con= mysql_connect("localhost:3307", "root", ""); 
      mysql_select_db("kstark",$con); 
      $qry="select * from images"; 
      $result= mysql_query($qry,$con);  
      while($row = mysql_fetch_array($result)) 
      { 
       echo '<img height="300" width="300" src="data:image;base64,'.$row[2].'">'; 
      } 
      mysql_close($con); 
     } 
    ?> 
</body> 

+3

** Stop ** mit veraltet mysql_ * 'API. Verwenden Sie 'mysqli_ *' oder 'PDO' mit vorbereiteten Anweisungen – Jens

+0

Anzeige: Die Bilddaten sind nicht base64, verwenden Sie:' base64_encode() '. –

+1

@KIKOSoftware - Er base64 codiert tatsächlich das Bild, bevor er es in der DB speichert. –

Antwort

1

Sie benötigen die tmp_name anstatt den Dateinamen zu verwenden, wenn Sie die Inhalte abzurufen versuchen.

if(isset($_POST['sumit'])) 
{ 
    if (getimagesize($_FILES['image']['tmp_name'])==FALSE) { 
     echo "Please select an image."; 
    } else { 
     /* use the tmp_name rather than name here! */ 
     $image=file_get_contents($_FILES['image']['tmp_name']); 
     $image=base64_encode($image); 
     $name=addslashes($_FILES['image']['name']); 

     saveimage($name,$image); 
    } 
} 
+0

Hallo. Danke, Es hat zwar den Fehler behoben, aber die Bilder werden nicht hochgeladen. –

+0

Was enthalten '$ _FILES ['image'] ['error']'? –

+0

Wenn ich dies versuchte, bekomme ich die Base64-Darstellung des Bildes hochgeladen, was Sie in der Datenbank speichern möchten. Um das eigentliche Bild zu speichern, müssen Sie 'move_uploaded_file ($ name, $ path)' ' – RamRaider

Verwandte Themen