2017-03-07 105 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

如果您想采取@ResheilAgarwal建议 –

+0

,那么您喜欢Amazon S3存储的内容将帮助您存储图像您认为您将BLOB存储在数据库中的位置在哪里?所有你插入的是变量'$ image'的内容,并且它的值只是'basename($ _FILES [“image”] [“name”],“。jpg”)' - 这不是没有BLOB ... – CBroe

回答

0

你不要存放在$图像变量的完整路径,你可以试试:

$图像= $ target_dir。 basename($ _FILES [“image”] [“name”]。“。jpg”);

也可以考虑在“基本名”手册: http://php.net/manual/en/function.basename.php

您可能还需要考虑其作为一件坏事,在DB的路径,因为如果你的文件结构发生变化的路径,这将导致各种有趣的事情发生。

您可以通过保存文件名来避免混乱,只需修改basename语句中的扩展问题,然后在显示代码上预先指定文件名的路径即可。

如果您不介意大型数据库,则可以将图像源存储在数据库中。我通常不建议在数据库字段中使用源代码,但在少量记录的较小表上,您应该可以。

希望有所帮助。