'PHP. I want to allow user to add file to form, from any folder

Here is my form enter image description here

It gets the url of the image, and save it in the database. But it can show only files saved in folder "uploads", so I want to allow user to add file from any place of the PC. Help please Maybe I can do smth in the store.php?

Create.php

<form style="width: 25em; text-align: center; align-items: center;" action="store.php" method="POST">
     
  <div class="mb-2 form-group">
    <label for="exampleInputEmail1" class="mb-2">Name</label>
    <input type="text" name="name" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Name">
   
  </div>
  <div class="mb-2 form-group">
    <label for="exampleInputPassword1" class="mb-2">Surname</label>
    <input type="text" name="surname" class="form-control" id="exampleInputPassword1" placeholder="Surname">
  </div>

 <div class="mb-2 form-group">
    <label for="inputPatronym" class="mb-2">Patronym:</label>
    <input type="text" name="patronym" class="form-control"placeholder="Patronym">
  </div>

                         

  <div class="mb-2 form-group">
    <label for="inputPatronym" class="mb-2">Biography:</label>
    <input type="text" name="description" class="form-control"placeholder="Biography">
  </div>


<div class="mb-3">
  <label for="formFile" class="form-label">Image</label>
  <input class="form-control" name="userfile" type="file" id="formFile" accept=".img,.png,.jpeg,.jpg,.bmp">
</div>

<div class="mb-4 form-group">
    

  <button type="submit" class="btn btn-success" >Save</button>


  </div>
     <a class="btn btn-primary btn-sm ml-3" href="/postati.php" role="button">Return</a>
</form>
</body>
</html>

Store .php

<?php 
    require_once __DIR__ . "/database/pdo.php";

    $Name = $_POST['name'];
    $Surname = $_POST['surname'];
    $Patronym = $_POST['patronym'];
    $Description = $_POST['description'];
    $userfile = $_POST['userfile'];
    
   
    $sql = "INSERT INTO `peoples` (`Name`, `Surname`, `Patronym`, `Description`, `userfile`) VALUES (:name, :surname, :patronym, :description, :userfile)";

    $params = [
        "name" => $Name,
        "surname" => $Surname,
        "patronym" => $Patronym,
        "description" => $Description,
        "userfile" => $userfile,
    ];

    $prepare = $pdo->prepare($sql);
    $prepare->execute($params);

    $pdo->lastInsertId();
    $lastInsertId=$pdo->lastInsertId();


header("Location: /postati.php")
    
?>

View


<div class="image text-center">
  <img src="uploads/<?=$people['userfile']?>" width="250px" height="350px" class="center">
</div>

I tried to move the file with move_uploaded_file, but then the other variables are not saving.



Solution 1:[1]

You are missing the enctype="multipart/form-data" declaration in your form. You need this if you want a file upload form.

<form enctype="multipart/form-data" action="store.php" method="POST">

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 delboy1978uk