2

我正在尝试为会员资料上传图片并使用 php 将其存储在数据库中然后检索它,但它不适用于我

这就是我尝试插入图像的方法:

<html>
<head>
<title> Upload an image </title>
</head>
<body>
<form action="index.php" method="POST" enctype="multipart/from/data">
  File:
  <input type="file" name="image" > <input type="submit" value="upload">
</form>
</body>
</html>
<?php

  mysql_connect("localhost", "root","") or die ("could not connect to the server");
  mysql_select_db("project") or die ("that database could not be found");

  $file = $_FILES['image']['tmp_name'];

  if (!isset($file))
     echo "please select file";
  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 not image ";

     else
     {

         if (!$insert= mysql_query("INSERT INTO user_info (image) VALUES ('$image')"))
             echo "Problem";

         else
         {

             echo "image: <p /> your image <p /><img src='view.php?id="id"'>";
         }
     }


 }

这用于检索图像

<?php

   // do some validation here to ensure id is safe
   mysql_connect("localhost", "root","") or die ("could not connect to the server");
   mysql_select_db("project") or die ("that database could not be found");
   $id = addslashes($_REQUEST['id']);

   $image = mysql_query("SELECT * FROM user_info WHERE id='$id'");
   $image = mysql_fetch_assoc($image);
   $image = $image['image'];

   header("Content-type: image/jpeg");
   echo $image;
?>
4

5 回答 5

3

我想你应该重新考虑你在做什么。

为什么将文件存储在mysql数据库中?我的意思是这有什么意义?

文件系统是用于存储文件的专家数据库。所以最好不要将文件保存在普通数据库中,而是保存在文件系统中。

图像可以在目录 (0102003.gif) 中用数字命名,并且可以通过 mysql 记录中的文件名来寻址。

如果你真的需要在数据库中存储文件,mysql 不是那个工具。

看看 mongoDB。

PS:mysql接口已弃用,请使用mysqli或PDO。

于 2013-05-05T08:28:57.753 回答
0

试试这个代码它会帮助你。

<?php
    mysql_connect("localhost", "root","") or die ("could not connect to the server");
    mysql_select_db("database1") or die ("that database could not be found");

    $file = $_FILES['image']['tmp_name'];

    $image= addslashes(file_get_contents($_FILES['image']['tmp_name']));
    $image_name = addslashes($_FILES['image']['name']);
    $image_size = getimagesize($_FILES['image']['tmp_name']);

    mysql_query("INSERT INTO table1 (id,image) VALUES ('1','{$image}')");        
?>
于 2014-02-24T05:56:11.767 回答
0

要将图像存储在 php 网站上,您只需将文件放在目录中并将文件名保存在 mySQL 数据库中。祝你好运!

于 2013-05-05T08:35:27.167 回答
0

您需要 enctype=multipart/form-data 在您的表单声明中。并通过 $_FILES 变量而不是 $_POST 变量访问文件。喜欢:

<form action="testimage1.php" method="post" enctype="multipart/form-data"> <input name="uploadimage" type="file" /> </form> <?php $filename = $_FILES['uploadimage']['tmp_name']; ?>

于 2014-03-22T10:54:31.407 回答
-1

您可以通过两种不同的方式插入和检索图像:

方法一:

将整个图像以longblob类型存储在数据库本身中并从数据库中检索它。

插入图片:

<?php
//Get uploaded file data
$img_tmp_name    = $_FILES['image']['tmp_name'];
$img_name        = $_FILES['image']['name'];
$img_size        = $_FILES['image']['size'];
$img_type        = $_FILES['image']['type'];
$img_error       = $_FILES['image']['error'];
//Processed uploaded img data
if($img_error > 0)
{
    die('Upload error or No img uploaded');
}
$handle = fopen($img_tmp_name, "r");
$content = fread($handle, $img_size);
fclose($handle);
$encoded_content = addslashes($content);

$query="insert into user_info (img_content,img_type) values('".$encoded_content."','".$img_type."')";
$ex=mysqli_query($conn,$query);
if($ex){
    echo "image uploaded";
}
else{
    echo "image not uploaded<br/>".mysqli_error($conn);
}
?>

检索图像:

您可以通过 2 种方法检索图像,第一种是使用处理程序 PHP 脚本返回图像数据,第二种方法如下:

<?php
    $query="select * from user_info WHERE id='".$id."'";
    $ex=mysqli_query($conn,$query);
    $row=mysqli_fetch_array($ex)
?>              
<img src="<?php echo "data:'".$row['img_type']."';base64,".base64_encode($row['img_content']); ?>" />

但是,如果图像尺寸很大,则方法 1 不是推荐的方法。

方法二:

在这种方法中,我们只将图像的路径存储在数据库中。我们将图像存储在一个目录中。

插入图片:

<?php
    $target_dir = "image/";
    $target_file = $target_dir . basename($_FILES["image"]["name"]);
    move_uploaded_file($_FILES["image"]["tmp_name"], $target_file);

    $query="insert into user_info (img_path) values('".$target_file."')";
    $ex=mysqli_query($conn,$query);
    if($ex){
        echo "image uploaded";
    }
    else{
        echo "image not uploaded<br/>".mysqli_error($conn);
    }
?>

检索图像:

<?php
    $query="select * from user_info WHERE id='".$id."'";
    $ex=mysqli_query($conn,$query);
    $row=mysqli_fetch_array($ex)
?>
<img src="<?php echo $row['img_path']; ?>" alt=""/>
于 2019-03-17T05:28:41.187 回答