如何正确使用content-type:image / jpeg?

时间:2012-09-04 06:37:40

标签: php sql-server mime-types content-type

我使用content-type:image / jpeg创建了一个页面“student_picture.php”。当我想在同一页面中添加其他文本时我遇到了问题..

这是我的代码示例:

<?php
session_start();

if(!isset($_SESSION["StudentNo"])){
    header("location:login.php");
}

$StudentNo = $_SESSION['StudentNo'];

require("includes/connection.php");

$sql = "SELECT StudentPicture from dbo.Students where StudentNo = '$StudentNo'";
$stmt = sqlsrv_query( $conn, $sql );

if( $stmt === false) {
    die( print_r( sqlsrv_errors(), true) );
}

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
    $img = $row['StudentPicture'];

    if ($img == null ) {
        echo "<img src='img/default_pic.gif'>";
    } else {
        $img =  trim($img);
        header('Content-Type: image/jpeg');
        echo $img;
    }

    echo $StudentNo;
}
?>

图像成功显示但回显$ StudentNo未显示..任何人都可以帮我解决问题吗?提前谢谢。

4 个答案:

答案 0 :(得分:3)

您可能需要使用以下代码:

<?php 

$image = 'http://www.example.com/image.jpg';

$info = getimagesize($image);

header('Content-Type: '.$info['mime']);

echo file_get_contents($image);

exit;

?>

答案 1 :(得分:1)

我认为您在使用Content-Type的{​​{1}}或我知道的任何其他图像格式时无法显示文字。文字只能与image/jpeg或其他例外显示,例如text/?

如果您在使用php文件时不知道如何在单独的页面上显示图像,请使用:

application/pdf

就像任何其他图像一样。

希望有所帮助。

答案 2 :(得分:0)

您必须exit您的脚本,因为header已发送到客户端浏览器。如果$_SESSION["StudentNo"]不存在,脚本将处理并尝试输出您的图像。

<?php
    session_start();
    if(!isset($_SESSION["StudentNo"])){
        header("location:login.php");
        die();
    }

这不是输出图像的正确方法,echo "<img src='img/default_pic.gif'>"; header('Content-Type: image/jpeg');不正常,要么返回没有该标题,要么您读取图像:

if ($img == null){
    $img = 'img/default_pic.gif';
} else {
    $img =  trim($img);
}

header('Content-Type: image/jpeg');
readfile($img);

或您丢失了标题标记

if ($img == null){
    $img = "<img src='img/default_pic.gif'>";
} else {
    $img = "<img src='".trim($img)."'>";
}
echo $img;

所以你的脚本可能是:

<?php
    session_start();
    if(!isset($_SESSION["StudentNo"])){
        header("location:login.php");
        die();
    }
    $StudentNo = $_SESSION['StudentNo'];

    require("includes/connection.php");

    $sql = "SELECT StudentPicture from dbo.Students where StudentNo = '$StudentNo'";
    $stmt = sqlsrv_query( $conn, $sql );
    if( $stmt === false) {
        die( print_r( sqlsrv_errors(), true) );
    }

    while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
        $img = $row['StudentPicture'];
        if ($img == null){
            $img = "<img src='img/default_pic.gif'>";
        } else {
            $img = "<img src='".trim($img)."'>";
        }
        echo $img;
        echo $StudentNo;
    }
?>

我不知道您的数据库连接中的功能,但我认为您应该使用类似$row = sqlsrv_fetch_row( $stmt, SQLSRV_FETCH_ASSOC);的内容而不使用while

答案 3 :(得分:0)

当您在数据库中找到图像时输出图像,您需要通过

包含动态图像
<img src="anotherscript.php">

或使用其中一个内置图像库生成jpg文件,并将其文件名存储在该数据库中,而不是存储原始数据