我可以在同一页面上使用多个内容类型吗?

时间:2012-07-27 18:01:44

标签: php mysql html

我有这个PHP代码,它从数据库中抓取二进制(blob)数据并在浏览器中显示为图像。但是,此后的所有内容都将被忽略。有没有办法我也可以使用文字queries/forms/tables?同一页面上的基本HTML元素?

有一个页面只能显示来自数据库的图片而没有别的东西对我来说没用。

<?php
    $mysqli=mysqli_connect('localhost','root','','draftdb');
    if (!$mysqli)
    die("Can't connect to MySQL: ".mysqli_connect_error());
    $imageid= 1;
    $stmt = $mysqli->prepare("SELECT PICTURE_ID FROM display WHERE INDEX_ID =?"); 
    $stmt->bind_param("i", $imageid);
    $stmt->execute();
    $stmt->bind_result($image);
    $stmt->fetch();
    header("Content-Type: image/jpeg");
    echo $image; 
?>

4 个答案:

答案 0 :(得分:4)

不,每页只能有一个Content-Type

你应该做的只是创建另一个页面,其中包含一个图像(src指向你显示的代码)和你想要显示的表单,如下所示:

<html>
    <body>
        <div>
            <img src="image.php" alt="image retreived from DB" />
        </div>
        <form>
            <input type="text" name="foo" />
            ...
        </form>
    </body>
</html>

答案 1 :(得分:2)

使用图像类型的标题内容时,此页面上可显示的唯一信息是图像本身。虽然可以在大型脚本中使用子php脚本,并让子脚本返回图像头,然后使用常规脚本执行其他操作。

你可以这样做:<img src="\path\to\php\script" />在你的另一个脚本中,它可以按你的意愿工作。

答案 2 :(得分:2)

一个http响应中不能包含多个内容类型。

要制作包含数据库中图片的网页,您可以制作常规网页,并为img代码使用以下选项之一:

  1. src="your_picture_script.php?pic_id=xxxx" - 'your_picture_script.php'就是你问题中的典范。

  2. src="data:image/jpeg;base64,<?php echo base64encode($image);?>" - $ image是实际的jpeg文件。

答案 3 :(得分:0)

为什么不在<img>标签中显示图片?然后写下面的其他HTML元素?

Content-Type标题告诉浏览器它将显示哪种类型的数据。您可以用HTML显示图像,而不是图像中的HTML(除非它是HTML代码的图像)。