Php 我正在尝试显示我使用longblob和PDO上传到数据库的图像
我试着用longblob和PDO显示我上传到数据库的图像,但我总是看到一个黑屏,中间有一个白色的小正方形。 代码如下:Php 我正在尝试显示我使用longblob和PDO上传到数据库的图像,php,sql,pdo,blob,Php,Sql,Pdo,Blob,我试着用longblob和PDO显示我上传到数据库的图像,但我总是看到一个黑屏,中间有一个白色的小正方形。 代码如下: <?php include('snippets/startDB.php'); include('snippets/Session.php'); $PicNum = $_GET["PicNum"]; echo($PicNum); $id = $_SESSION['id']; $stmt = $dbh-&g
<?php
include('snippets/startDB.php');
include('snippets/Session.php');
$PicNum = $_GET["PicNum"]; echo($PicNum);
$id = $_SESSION['id'];
$stmt = $dbh->prepare('SELECT imagem FROM aluno WHERE id= ?');
$stmt->execute(array($PicNum));
$row = $stmt->fetch();
Header( 'Content-type: image/gif');
echo $row['imagem'];
?>
我认为保存文件工作正常,因为上传图像时数据库中会出现一个文件。
我的保存文件:
<?php
$imagem = $_FILES["imagem"];
include('snippets/startDB.php');
include('snippets/Session.php');
if($imagem != NULL) {
$nomeFinal = time().'.jpg';
if (move_uploaded_file($imagem['tmp_name'], $nomeFinal)) {
$tamanhoImg = filesize($nomeFinal);
$mysqlImg = addslashes(fread(fopen($nomeFinal, "r"), $tamanhoImg));
if($_SESSION['tipo']== 'Aluno'){
$stmt = $dbh->prepare('UPDATE aluno SET imagem = ? WHERE id = ?');
$stmt->execute(array($mysqlImg, $_SESSION["id"]));
}else if($_SESSION['tipo']== 'Professor'){
$stmt = $dbh->prepare('UPDATE professor SET imagem = ? WHERE id = ?') ;
$stmt->execute(array($mysqlImg, $_SESSION["id"])) ;
}
header("location:perfil_aluno.php");
}
}
else {
echo"Erro!";
}
?>
您确定图像是gif(不是jpeg和png)吗?请同时更改$PicNum=$\u GET[“PicNum”];echo($PicNum)
到$PicNum=$\u GET[“PicNum”]代码>要查看效果,请删除回声并将其从gif更改为png,同时尝试使用jpg也不起作用。该文件存储在数据库中,但也出现在我认为不受支持的网页的本地文件夹中。“也出现在我认为不受支持的网页的本地文件夹中”-这正是move\u uploaded\u file()
所做的。您还可以对二进制文件应用addslashes()
,在最好的情况下,它可以完成任何事情,在最坏的情况下,它会破坏图片。是的,我看到我可能会从目录加载图像,而不是将其发送到数据库