2017-03-07 15 views
-2

画像ソースを使用してブログ画像を表示しようとしています。以下は、PHPを使用してMYSQLデータベースに画像を挿入し、 '画像'というディレクトリに保存する方法です。インサートは、ブロブ画像を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 
       )); 
    } 

成功したしかし、ここでの問題は、私がimg-srcでそれを表示しようとすると、画像のリンクが壊れていると、それは何も表示されませんです。

$イメージ= $:私のような何かをしようと、echo $key['image']しようとした、それはあなたが$イメージ変数に完全なパスを格納しない正しいイメージ名ではなく、画像そのもの

<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

提案。 mysqlに画像を保存しないでください。代わりに、より有用なデータベースに画像の画像ソースを格納します。 –

+1

Amazon S3ストレージのようなものは@ResheilAgarwalのアドバイスを受けたい場合に画像を保存するのに役立ちます –

+0

どこにBLOBをデータベースに保存していると思いますか?あなたが挿入するのは変数 '$ image'の内容です。その値は' basename($ _FILES ["image"] ["name"]、 "。jpg") 'です。 ... – CBroe

答えて

0

出力に思われていますtarget_dir。ベース名($ _FILES ["image"] ["name"]。 "。jpg");

また、「ベース名」でマニュアルを考えてみます。 http://php.net/manual/en/function.basename.php

すべての種類の原因となりますよう、あなたのファイル構造の変更でパス場合ので、あなたはまた、悪いこととしてDB内のパスを持っ検討する必要があります楽しいものが起こる

あなたは、現在実行中のファイル名だけを保存することで、混乱を避けることができます。basenameステートメントの拡張機能の問題を修正し、表示コードのパス名の前に追加してください。

大きなデータベースに気にしない場合は、イメージソースをデータベースに保存できます。私は通常、データベースのフィールドでソースをお勧めしませんが、いくつかのレコードを持つ小さなテーブルでは、あなたはOKでなければなりません。

希望に役立ちます。

関連する問題