G'day,我正在尝试将图像上传到我的数据库中名为“store”的表中,但它似乎不起作用。没有显示错误,但出现了我上传的错误消息,因此语法没有问题。
这是我写的两个相互链接的PHP文件:
的index.php
<html>
<body>
<form action="index.php" method="POST" enctype="multipart/form-data">
File:
<input type="file" name="image"><input type="submit" value="Upload">
</form>
<?php
// connect to database
include "connect.inc.php";
//file properties
$file = $_FILES['image']['tmp_name'];
if(!isset($file))
echo "Please select an image.";
else
{
$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name = addslashes($_FILES['image']['name']);
$image_size = getimagesize($_FILES['image']['tmp_name']);
if($image_size==FALSE)
echo "That's not an image.";
else
{
if (!$insert = mysql_query("INSERT INTO store VALUES ('','$image_name','$image')"))
echo "Problem uploading image.";
else
{
$lastid = mysql_insert_id();
echo "Image uploaded.<p />Your image:<p /><img src=get.php?id=$lastid>";
}
}
}
?>
</body>
</html>
get.php
<?php
include "connect.inc.php";
$id = addslashes($_REQUEST['id']);
$image = mysql_query("SELECT * FROM store WHERE id=$id");
$image = mysql_fetch_assoc($image);
$image = $image['image'];
header("Content-type: image/jpeg");
echo $image;
?>
答案 0 :(得分:0)
您在阅读文件内容并转回时遇到问题。看起来文件的内容没有放在数据库字段中。检查该字段的长度,内容可以很长(中等文本或长文本)。
您还需要检查上传文件的类型,您可以通过“mime_content_type”函数来完成。如果用户将上传gif。或.png文件头(“Content-type:image / jpeg”)会设置错误信息,您可以使用更通用的标题标题(“Content-type:image / *”)。并且用于实时站点PDO或其他ORM,因为您的方法存在许多漏洞。