2012-07-27 41 views
0

我有這個從數據庫中獲取二進制(blob)數據並在瀏覽器中顯示爲圖像的php代碼。但是,之後的所有內容都被忽略。有沒有辦法,我也可以使用文字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

不,您每頁只能有一個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> 
2

當使用圖像類型的標題內容,可以在此頁面上顯示的唯一信息是圖像本身。儘管在大型腳本中使用sub-php腳本是可能的,並且讓子腳本返回圖像標題,然後讓普通腳本使用它來做其他事情。

你可以這樣做:<img src="\path\to\php\script" />在你的其他腳本里面,它會按你的意願工作。

+0

謝謝!我會嘗試一下 – Undermine2k 2012-07-27 18:08:47

0

爲什麼你不在<img>標籤中顯示圖像?然後在其下面寫下其他HTML元素?

Content-Type標題告訴瀏覽器它將顯示哪種類型的數據。您可以用HTML顯示圖像,而不是圖像中的HTML(除非是HTML代碼的圖像)。

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文件。

相關問題