繁体   English   中英

无法通过PHP将上传的图像显示到MySQL中

[英]Unable to display uploaded images via PHP into MySQL

我已将代码精简到最低限度,以尝试找出为什么无法显示通过PHP上传并存储到MySQL的任何图像的原因。 如果有人能指出我的错误,我将不胜感激。

在执行时,浏览器报告该图像包含错误,因此无法显示。

但是,该图像可以在同一环境中运行的其他数据库中上载并正常显示。

我检查了上传后数据库中是否包含blob。

我想我缺少明显的东西。

上传表格

<body>
<form enctype="multipart/form-data" action="imagetestprocess.php" method="post">
<input type="file" name="image">
<input type="submit" value="Submit">
</form>

表单处理程序

<?php
include("../mylibrary/login.php");

login();

$imagefile = file_get_contents($_FILES['image']['tmp_name']);
$imagefile = mysql_real_escape_string($imagefile);
$query="UPDATE pieces SET image_full='$imagefile' WHERE assetno='1'";
$result = mysql_query($query);

?>

图像显示器

<?php
include("../mylibrary/login.php");

login();
echo "<body>";
echo "before";
echo "<img src=\"showimage.php\" alt=\"showimage\">";
echo "after";

?>

称为功能...

<?php
include("../mylibrary/login.php");
login();
$query = "select * from pieces where assetno='1'";
$result=mysql_query($query);
$row=mysql_fetch_array($result, MYSQL_ASSOC);
$image=$row['image_full'];
header("Content-type: image/jpeg"); 
echo $image;
?>

将image_full字段类型更改为MEDIUMBLOB / BLOB

用户这个$image = chunk_split(base64_encode(file_get_contents("image.jpg"))); 而不是$imagefile = file_get_contents($_FILES['image']['tmp_name']);

并在显示图像功能中使用以下图像。

header("Content-type: image/jpeg"); 
echo base64_decode($image);

使用mysql_escape_string或添加斜线并清除浏览器缓存以查看其是否有效

如果上述解决方案不适合您。 尝试增加数据库中字段的长度。 如果仍然不起作用,则可以检查图像格式是RGB还是CMYK。 格式应为RGB以在屏幕上看到。 为了确保您可以尝试在浏览器中打开相同的图像文件。

我认为这与您的数据库编码有关。 一些编码不支持二进制数据。

如果您无法更改编码,则也许可以在保存之前对CSS base64进行编码,并在显示时对其进行解码。 唯一的问题是base64会将大小增加3。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM