-1

G'day,我正在尝试将图像上传到我的数据库中名为“store”的表中,但它似乎不起作用。没有显示错误,但出现了我上传的错误消息,所以语法没有问题。

这是我编写的两个相互关联的 PHP 文件:

索引.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>

获取.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;

?>
4

1 回答 1

0

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

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

并用于实时站点 PDO 或其他 ORM,因为您的方法有很多漏洞。

于 2013-02-04T16:21:12.867 回答