2016-03-30 19 views
0

Ich brauche Hilfe mit meinem Display-Bild, das Display ist korrekt, aber ich weiß nicht, warum das Bild nicht erscheint.Bild hochladen und anzeigen php mysqli

CREATE TABLE `images` (
    `id` int(11) NOT NULL, 
    `name` varchar(100) DEFAULT NULL, 
    `size` int(11) DEFAULT NULL, 
    `type` varchar(20) DEFAULT NULL, 
    `content` mediumblob 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

und das ist mein "upload.php" ist

<?php 

// Check for post data. 
if ($_POST && !empty($_FILES)) { 
    $formOk = true; 

    //Assign Variables 
    $path = $_FILES['image']['tmp_name']; 
    $name = $_FILES['image']['name']; 
    $size = $_FILES['image']['size']; 
    $type = $_FILES['image']['type']; 

    if ($_FILES['image']['error'] || !is_uploaded_file($path)) { 
     $formOk = false; 
     echo "Error: Error in uploading file. Please try again."; 
    } 

    //check file extension 
    if ($formOk && !in_array($type, array('image/png', 'image/x-png', 'image/jpeg', 'image/pjpeg', 'image/gif'))) { 
     $formOk = false; 
     echo "Error: Unsupported file extension. Supported extensions are JPG/PNG."; 
    } 
    // check for file size. 
    if ($formOk && filesize($path) > 500000) { 
     $formOk = false; 
     echo "Error: File size must be less than 500 KB."; 
    } 

    if ($formOk) { 
     // read file contents 
     $content = file_get_contents($path); 

     //connect to mysql database 
     if ($conn = mysqli_connect('localhost', 'root', '', 'upload')) { 
      $content = mysqli_real_escape_string($conn, $content); 
      $sql = "insert into images (name, size, type, content) values ('{$name}', '{$size}', '{$type}', '{$content}')"; 

      if (mysqli_query($conn, $sql)) { 
       $uploadOk = true; 
       $imageId = mysqli_insert_id($conn); 
      } else { 
       echo "Error: Could not save the data to mysql database. Please try again."; 
      } 

      mysqli_close($conn); 
     } else { 
      echo "Error: Could not connect to mysql database. Please try again."; 
     } 
    } 
} 
?> 

<html> 
    <head> 
     <title>Upload image to mysql database.</title> 
     <style type="text/css"> 
      img{ 
       margin: .2em; 
       border: 1px solid #555; 
       padding: .2em; 
       vertical-align: top; 
      } 
     </style> 
    </head> 
    <body> 
     <?php if (!empty($uploadOk)): ?> 
      <div> 
       <h3>Image Uploaded:</h3> 
      </div> 
      <div> 
       <img src="image.php?id=<?=$imageId ?>" width="150px"> 
       <strong>Embed</strong>: <input size="25" value='<img src="image.php?id=<?=$imageId ?>">'> 
      </div> 

      <hr> 
     <?php endif; ?> 

     <form action="<?=$_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data" > 
      <div> 
      <h3>Image Upload:</h3> 
      </div> 
      <div> 
      <label>Image</label> 
      <input type="hidden" name="MAX_FILE_SIZE" value="500000"> 
      <input type="file" name="image" /> 
      <input name="submit" type="submit" value="Upload"> 
      </div> 
     </form> 
    </body> 
</html> 

dann ist dies mein "image.php"

<?php 

    // verify request id. 
    if (empty($_GET['id']) || !is_numeric($_GET['id'])) { 
     echo 'A valid image file id is required to display the image file.'; 
     exit; 
    } 

    $imageId = $_GET['id']; 

    //connect to mysql database 
    if ($conn = mysqli_connect('localhost', 'root', '', 'upload')) { 
     $content = mysqli_real_escape_string($conn, $content); 
     $sql = "SELECT type, content FROM images where id = {$imageId}"; 

     if ($rs = mysqli_query($conn, $sql)) { 
      $imageData = mysqli_fetch_array($rs, MYSQLI_ASSOC); 
      mysqli_free_result($rs); 
     } else { 
      echo "Error: Could not get data from mysql database. Please try again."; 
     } 
     //close mysqli connection 
     mysqli_close($conn); 

    } else { 
     echo "Error: Could not connect to mysql database. Please try again."; 
    } 

    if (!empty($imageData)) { 
     // show the image. 
     header("Content-type: {$imageData['type']}"); 
     echo $imageData['content']; 
    } 
?> 

jedes Mal, wenn ich versuche, einen Bildprozess hochzuladen, war erfolgreich, aber das Bild, das ich hochgeladen habe, erscheint nicht. aber das erscheint nur Bildfehler. bitte irgendjemanden, der mir helfen kann?

oder kann einer von Ihnen mir eine Anleitung geben, wie Bilder mit der Datenbank hochgeladen und angezeigt werden?

Antwort

-1

Sie müssen ['Inhalt'] mit einer Weile extrahieren. Wie folgt aus:

$rs = mysqli_query($conn, $sql); 
    while ($imageData = mysqli_fetch_assoc($rs)) { 
     $content = $imageData['content']; 
    } 
    header("Content-type: $content "); 
    echo $content; 

werde ich Sie, dass der Check empfehlen und ändern:

$sql = "SELECT type, content FROM images where id = {$imageId}"; 

für

$sql = "SELECT type, content FROM images where id = '$imageId' "; 
+0

owh oke. Ich werde es beim nächsten Mal versuchen. weil es scheint, ich habe es mit einem anderen Skript zu lösen. aber danke für Ihre Hilfe. es hilft mir zu. –