我创建简单的html和php将图像(长blob类型)上传到数据库并显示它。我尝试了不同的代码来实现,但没有结果 这段代码有相同的想法,但图像没有上传到数据库,但当我用“echo”打印名称和内容时,它打印出来。此外,代码破碎图像的结果 我真的不知道它在哪里问题!!!
upload.php的
<form action="upload.php" method="POST" enctype="multipart/form-data" >
<label for="file">Filename:</label>
<input type="file" name="image" id="image"><br>
<input type="submit" name="submit" value="Upload">
</form>
<?php
if(isset($_POST['submit']))
{
mysql_connect("127.0.0.1","root","")or die(mysql_error());
mysql_select_db("databaseimage") or die(mysql_error());
$image= mysql_real_escape_string( file_get_contents($_FILES["image"]["tmp_name"]));
$image_name= mysql_real_escape_string($_FILES["image"]["name"]);
$image_type= mysql_real_escape_string($_FILES["image"]["type"]);
$image_size= $_FILES["image"]["size"];
if(substr($image_type,0,5)=="image")
{
mysql_query("INSERT INTO 'store' VALUSE ('','$image_name','$image')");
echo "Image Uploaded";
$lastid= mysql_insert_id();
echo "Image Uploaded. </p> Your Image: </p> <img src=\"get.php?id=$lastid\"/>";
}
}
?>
get.php
<?php
mysql_connect("127.0.0.1","root","")or die(mysql_error());
mysql_select_db("databaseimage") or die(mysql_error());
if (isset($_GET['id']))
{
$id= mysql_real_escape_string( $_GET['id']);
$query=mysql_query("SELECT * FROM 'store' WHERE 'id'='$id'");
while( $raw=mysql_fetch_assoc($query))
{
$imageData=$raw["image"];
}
header("Content-type: image/jpeg");
echo $imageData;
}
else
{
echo "Error!...";
}
?>
答案 0 :(得分:0)
将'
更改为“:
upload.php的
mysql_query("INSERT INTO `store` VALUES ('','$image_name','$image')");
get.php
$query=mysql_query("SELECT * FROM `store` WHERE `id`='$id'");
mysql _ * 函数自PHP 5.5.0起不推荐使用,不建议用于编写新代码,因为将来会删除它们。相反,应使用mysqli或PDO_MySQL扩展名。
答案 1 :(得分:0)
mysql_real_escape_string
逃脱了很多很可能最终破坏图片内部数据的角色。
如果你害怕SQL注入(或者更好的是,将编码与PDO结合起来),你可以尝试用b64之类的东西对其进行编码,而不是试图逃避它。
存储图片:
$image = base64_encode(file_get_contents($_FILES["image"]["tmp_name"]));
检索编码图像:
<?php
// decode the image
$imageData = base64_decode($raw["image"]);
// get the file extension
$filename = basename($raw["name"]);
$file_extension = strtolower(substr(strrchr($filename,"."),1));
// set the appropriate content header
switch( $file_extension ) {
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default:
}
header('Content-type: ' . $ctype);
echo $imageData;
?>