PHP图像插入不起作用

时间:2013-02-04 01:54:46

标签: php mysql upload insert blob

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;

?>

1 个答案:

答案 0 :(得分:0)

您在阅读文件内容并转回时遇到问题。看起来文件的内容没有放在数据库字段中。检查该字段的长度,内容可以很长(中等文本或长文本)。

您还需要检查上传文件的类型,您可以通过“mime_content_type”函数来完成。如果用户将上传gif。或.png文件头(“Content-type:image / jpeg”)会设置错误信息,您可以使用更通用的标题标题(“Content-type:image / *”)。

并且用于实时站点PDO或其他ORM,因为您的方法存在许多漏洞。