Как сохранить изображение фиксированного размера в MySQL, используя PHP? - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь сохранить изображение от пользователя в базе данных, но после вставки он всегда показывает размер изображения как 26B, даже если размер изображения был в Kb. Я взял longBlob в MySQL для хранения того же самого. вот мой код

<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";}

Вставить объявление запроса:

  $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");
     }

1 Ответ

1 голос
/ 16 июня 2020
  1. move_uploaded_file($ff_TMP_NAME,$ffileDestination) означает поместить загруженный файл в вашу файловую систему по пути $ ffileDestination
  2. $stmtt->bind_param("s",$ffileNameNew) здесь вы привязываете сохраненное имя файла
  3. когда $stmtt->execute(), имя файла хранится в базе данных

теперь вы пытаетесь показать изображение правильно?

  1. выберите сохраненное имя файла в базе данных
  2. получите путь к этому изображение, которое хранится в вашей файловой системе
  3. показать изображение

, когда вы показываете изображение, есть два основных способа:

  1. файл publi c, что означает, что вы можете получить изображение с URL-адреса, например http://example.com/xxx.png. вы можете просто использовать <img src='http://example.com/xxx.png'>
  2. файл является частным, вы должны использовать php для чтения содержимого файла и его рендеринга. (base64_encode может помочь)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...