【问题标题】:Unable to display BLOB image with Data URI无法使用数据 URI 显示 BLOB 图像
【发布时间】:2014-05-10 05:11:59
【问题描述】:

我有一个 jpg 图像存储在 MySql 数据库表的列中,数据类型为 BLOB,部分 php 代码工作正常。

我正在尝试使用下面的 php 代码显示该图像,但它不起作用。我在屏幕上看到一个小图标,这绝对不是图像?有什么问题可以帮忙吗?

1) 读取图片php文件

   <?php
    header("Content-Type: image/jpg");
    $db=mysqli_connect("localhost","root","root123","deal_bank","3306");

    if (mysqli_connect_errno())
      {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }

    mysqli_select_db($db,"deal_bank");

    $sql = "SELECT * FROM image";
    $sth = $db->query($sql);
    $result=mysqli_fetch_array($sth);
    echo '<img src="data:image/jpg;base64,'.base64_encode( $result['image'] ).'"/>';


    ?>

2) 上传文件到MySql数据库

<?php

$con=mysqli_connect("localhost","root","root123","deal_bank","3306");

if (mysqli_connect_errno())
  {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

mysqli_select_db($con,"deal_bank");

$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] > 20000)
&& in_array($extension, $allowedExts)) {
  if ($_FILES["file"]["error"] > 0) {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
  } else {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
    if (file_exists("upload/" . $_FILES["file"]["name"])) {
      echo $_FILES["file"]["name"] . " already exists. ";
    } else {

    $stmt = $con->prepare('INSERT INTO image (image) VALUES (?)');

$null = null;
$stmt->bind_param('b', $null);
$stmt->send_long_data(0, file_get_contents($_FILES['file']['tmp_name']));

$stmt->execute();

      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];

     // $image = addslashes(file_get_contents($_FILE['file']['tmp_name']));
      //mysqli_query($con,"INSERT INTO image (image) VALUES ('{$image}') ");


    }
  }
} else {
  echo "Invalid file";
}






?>

【问题讨论】:

  • 1) HTML 中的实际数据 URI 是什么样的? 2) 是否上传了 JPG 图片?

标签: php mysql data-uri


【解决方案1】:

我换了

header("Content-Type: image/jpg");

ob_start( );

它现在工作正常我不确定之前的问题是什么?

【讨论】:

  • 问题是你在哪里 “说谎” 到带有该标题的浏览器 - 你说他将要接收的数据是图像,实际上它在哪里HTML 代码......(只需删除标题就足够了,ob_start 应该没有必要。)
  • @CBroe 你是对的,我确实将 HTML 代码发送到与 ob_start() 无关的浏览器。这解释了这一切,非常感谢我是 PHP 新手。
猜你喜欢
  • 2015-04-06
  • 2014-02-21
  • 2015-05-03
  • 1970-01-01
  • 2016-09-01
  • 2016-12-13
  • 1970-01-01
  • 2020-01-25
  • 1970-01-01
相关资源
最近更新 更多