[英]Is there a way to display images which are uploaded to MySQL through php?
[英]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.