【问题标题】:Image uploaded in database but not display on page in php?图像上传到数据库但不显示在 php 的页面上?
【发布时间】:2017-01-30 18:53:08
【问题描述】:

我有用于在 php 和 MySQL 中上传和查看图像的代码。单击“imageUpload.php”页面中的“提交”按钮后,图像将存储在数据库中。但未显示在“listImages.php”页面中。我不知道有什么问题。我看到“image not displaying when uploading in php”,但它对我来说似乎是不同的解决方案。这是我的代码,请看看我错在哪里。

imageUpload.php:

<?php

 /* CREATE TABLE IF NOT EXISTS `output_images` 
  (
  `imageId` tinyint(3) NOT NULL AUTO_INCREMENT,
  `imageType` varchar(25) NOT NULL DEFAULT '',
  `imageData` mediumblob NOT NULL,
   PRIMARY KEY (`imageId`)
   ) */    

if(count($_FILES) > 0) {
if(is_uploaded_file($_FILES['userImage']['tmp_name'])) {
mysqli_connect("localhost", "root", "");
mysqli_select_db ("test");
$imgData =addslashes(file_get_contents($_FILES['userImage']['tmp_name']));
$imageProperties = getimageSize($_FILES['userImage']['tmp_name']);

$sql = "INSERT INTO output_images(imageType ,imageData)
VALUES('{$imageProperties['mime']}', '{$imgData}')";
$current_id = mysqli_query($sql) or die("<b>Error:</b> Problem on Image Insert<br/>" . mysqli_error());
if(isset($current_id)) {
    header("Location: listImages.php");
}
}
}
?>
<HTML>
<HEAD>
<TITLE>Upload Image to MySQL BLOB</TITLE>
<link href="imageStyles.css" rel="stylesheet" type="text/css" />
</HEAD>
<BODY>
<form name="frmImage" enctype="multipart/form-data" action="" method="post" class="frmImageUpload">
<label>Upload Image File:</label><br/>
<input name="userImage" type="file" class="inputFile" />
<input type="submit" value="Submit" class="btnSubmit" />
</form>
</div>
</BODY>
</HTML>

listImages.php:

<?php
$conn = mysqli_connect("localhost", "root", "");
mysqli_select_db("test");
$sql = "SELECT imageId FROM output_images ORDER BY imageId DESC"; 
$result = mysqli_query($sql);
?>
<HTML>
<HEAD>
<TITLE>List BLOB Images</TITLE>
<link href="imageStyles.css" rel="stylesheet" type="text/css" />
</HEAD>
<BODY>
<?php
while($row = mysqli_fetch_array($result)) {
?>
    <img src="imageView.php?image_id=<?php echo $row["imageId"]; ?>" /><br/>
<?php       
}
  mysqli_close($conn);
?>
</BODY>
</HTML>

imageView.php:

<?php
$conn = mysqli_connect("localhost", "root", "");
mysqli_select_db("test") or die(mysqli_error());
if(isset($_GET['image_id'])) {
    $sql = "SELECT imageType,imageData FROM output_images WHERE imageId=" . $_GET['image_id'];
    $result = mysqli_query("$sql") or die("<b>Error:</b> Problem on Retrieving Image BLOB<br/>" . mysqli_error());
    $row = mysqli_fetch_array($result);
    header("Content-type: " . $row["imageType"]);
    echo $row["imageData"];
}
mysqli_close($conn);
?>

【问题讨论】:

  • 如果您在浏览器中访问 imageView.php?image_id=1 会发生什么?你看到图像了吗? (使用有效的 image_id)
  • 在 listimages.php 中没有它们是损坏的图标,如上图所示。当我看到 listimages.php 的代码视图然后在 他们是 "
    " 这意味着 imageView.php 正确获取 id。
  • 我问的是 imageView.php 而不是 listimages.php
  • @Rolf Pedro Ernst 我在浏览器中看到“localhost/mysql_blob_using_php/mysql_blob/…”,但页面为空白,没有图像。
  • @John120 右键单击​​损坏的图像并检查..查看图像是否正确回显

标签: php html mysql blob image-uploading


【解决方案1】:

这对你有帮助

<a href="imageView.php?image_id=<?php echo $row["imageId"]; ?>">
  <img src="<?php echo $row['imagedata']; ?>" alt="my picture" height="128" width="128" />
</a>

【讨论】:

    【解决方案2】:

    应该是

    $conn=mysqli_connect("ur_servername_ex_localhost","ur_username","ur_password","ur_db"); mysqli_query($conn, $sql);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-21
      相关资源
      最近更新 更多