2017-03-07 6 views
-2

Ich versuche, Blog-Bilder mit Bildquelle anzuzeigen. Das Folgende ist wie ich Bilder in MYSQL-Datenbank mit PHP einfügen und in einem Verzeichnis namens "Bild" gespeichert. Der Einsatz war erfolgreichAnzeigen von Blob-Bildern in PHP

<form method="post" action="post.php" enctype ="multipart/form-data"> 
    <input type="file" accept="image/png, image/jpeg, image/gif" name="image" id="image"/> 
    <input type="submit" name="post" value="Post" class="btn btn-primary btn btn-info"/> 
</form> 

    if (isset($_POST['post']) && isset($_FILES['image'])) { 
    $target_dir = "picture/"; 
    $target_file = $target_dir . basename($_FILES["image"]["name"]); 
    $uploadOk = 1; 
    $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
    $image=basename($_FILES["image"]["name"],".jpg"); 
    $stmt = "INSERT INTO post (image) values (:image)"; 
    $p = $MySQLi_CON -> prepare($stmt); 
    $results = $p -> execute(array(
        ":image" => $image 
       )); 
    } 

jedoch hier das Problem ist, wenn ich versuche, um es anzuzeigen in einem img-src, das Bild Link gebrochen ist und es zeigt nichts an. Ich habe echo $key['image'] versucht, es scheint die richtigen Bildnamen ausgeben, aber nicht das Bild selbst

<tbody> 
      <?php 
        $query = "SELECT * FROM test"; 
        $data = $MySQLi_CON->query($query); 
        foreach ($data as $key) { 
        ?> 
      <tr class="active"> 
      <td><div class = "col-sm-6 col-md-2"> 
     <a class = "thumbnail"> 
     <?php echo '<img src="data:image/jpeg;base64,'.base64_encode($key['image']).'" alt = "Generic placeholder thumbnail"/>';?>   
     </a> 
    </div></td> 
      <td><?php echo $key['image'];?></td> //it gives value such as picture.jpg, image.png 
      </tr> 
       <?php 
        } 
        ?>   
    </tbody> 
+1

Ein Vorschlag. Speichern Sie keine Bilder in MySQL. Speichern Sie stattdessen Bildquellen von Bildern in der Datenbank, die nützlicher sind. –

+1

Dinge wie Amazon S3 Speicher hilft Ihnen Bilder zu speichern, wenn Sie @ResheilAgarwal Beratung nehmen möchten –

+0

Wo denken Sie, dass Sie BLOBs hier in der Datenbank speichern? Alles, was Sie einfügen, ist der Inhalt der Variablen $ image, und der Wert davon ist nur basename ($ _FILES ["image"] ["name"], ". Jpg") '- das ist kein BLOB ... – CBroe

Antwort

0

Sie speichern nicht den vollständigen Pfad in Variable $ Bild, versuchen Sie so etwas wie:

$ image = $ Ziel_Verz. Basisname ($ _FILES ["Bild"] ["Name"]. ". jpg");

Sehen Sie sich auch das Handbuch „Basisnamen“: http://php.net/manual/en/function.basename.php

Möglicherweise möchten Sie auch Pfade in einem DB als schlechte Sache betrachten ist, weil, wenn der Pfad in Ihrer Änderungen Dateistruktur, die alle Arten verursachen Spaß Dinge zu passieren.

Sie können Verwüstung vermeiden, indem Sie nur den Dateinamen speichern, wie Sie jetzt tun, korrigieren Sie einfach das Erweiterungsproblem in der Anweisung basename und dann den Pfad zum Dateinamen auf dem Display-Code voran.

Wenn Ihnen eine große Datenbank nichts ausmacht, können Sie die Bildquelle in der Datenbank speichern. Ich empfehle im Allgemeinen nicht Quelle in Datenbankfeldern, aber auf kleineren Tabellen mit wenigen Datensätzen sollten Sie in Ordnung sein.

Hoffe, dass hilft.