我使用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未显示..任何人都可以帮我解决问题吗?提前谢谢。
答案 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文件,并将其文件名存储在该数据库中,而不是存储原始数据