如何使用PHP在MySQL中存储固定大小的图像?

如何使用PHP在MySQL中存储固定大小的图像?,php,mysql,Php,Mysql,我试图将用户的图像存储在数据库中,但插入后,即使图像大小以Kb为单位,图像大小始终显示为26B。 我在MySQL中使用了longBlob来存储相同的内容。 这是我的密码 <input type="file" name="profile_picture" id="imgupload" accept=".jpg,.png,.jpeg"> // for uploading image $ff_NAME = $_FILES['profile_picture']['name'];

我试图将用户的图像存储在数据库中,但插入后,即使图像大小以Kb为单位,图像大小始终显示为26B。 我在MySQL中使用了longBlob来存储相同的内容。 这是我的密码

<input type="file"  name="profile_picture" id="imgupload"  accept=".jpg,.png,.jpeg">


// for uploading image
   $ff_NAME = $_FILES['profile_picture']['name'];
   $ff_TMP_NAME = $_FILES['profile_picture']['tmp_name'];
   $ff_SIZE = $_FILES['profile_picture']['size'];
   $ff_ERROR = $_FILES['profile_picture']['error'];
   $ff_TYPE = $_FILES['profile_picture']['type'];

   $ffileExt = explode('.',$ff_NAME);
   $ffileActualExtention = strtolower(end($ffileExt));
   $fallowed = array('png','jpeg','jpg');

   if(in_array($ffileActualExtention,$fallowed))
   {
       if($ff_ERROR===0)
       {  
           if($ff_SIZE<500000)
           {
               $ffileNameNew = uniqid('',true)."".$ffileActualExtention;
               $ffileDestination = 'profileuploads/'.$ffileNameNew;
               move_uploaded_file($ff_TMP_NAME,$ffileDestination);
           }
           else
           {
               echo 'File size must be less than 500 kb.';
           }
       }
       else
       {echo "Error in uploading the files";}
   }
   else
   {echo "Only 'png','jpeg','jpg' are allowed";}
  • move\u upload\u file($ff\u TMP\u NAME,$ffileDestination)
    表示将上传的文件放入路径为$ffileDestination的文件系统中
  • $stmtt->bind_param(“s”,$ffilenamew)
    这里是绑定保存的文件名
  • $stmtt->execute()
    时,文件名存储在数据库中
  • 现在您正在尝试显示图像,对吗

  • 选择数据库中存储的文件名
  • 获取存储在文件系统中的此映像的路径
  • 显示图像
  • 显示图像时,基本上有两种方式:

  • 该文件是公共的,这意味着您可以从url获取图像,如
    http://example.com/xxx.png
    。您只需使用
  • 文件是私有的,您应该使用php读取文件内容并将其呈现出来。(base64_编码可能有帮助)

  • 您不是在插入文件,而是在插入文件名。您正在将文件存储在文件系统中(在
    profileuploads
    下),我该怎么做才能将图像存储在数据库中以及文件夹profileuploads下?为什么您想要它的两个副本?通常,将图像存储在文件系统上是正确的做法。查看文件是否存储在HTML树中。您只需为其提供一个URI即可。例如,
    您仍然需要存储文件名,以便将来可以创建该URI。
      $query = "INSERT INTO detail (`f_profile_picture`) VALUES (?)";
       $stmtt = $conn->prepare($query);//prepared statement method 
       $stmtt->bind_param("s",$ffileNameNew);//binding a parameter to question mark
    $stmtt->execute();
       if($stmtt->affected_rows > 0)
         {
         echo("success");
         }
    
         else
          {
         echo("failed");
         }