Вот моя форма
Он получает URL-адрес изображения и сохраняет его в базе данных. Но он может отображать только файлы, сохраненные в папке «загрузки», поэтому я хочу разрешить пользователю добавлять файл из любого места на ПК. Помогите, пожалуйста Может быть, я могу сделать что-то в store.php?
Создать.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>
Хранить .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")
?>
Вид
<div class = "image text-center">
<img src = "uploads/<?=$people['userfile']?>" width = "250px" height = "350px" class = "center">
</div>
Я попытался переместить файл с помощью move_uploaded_file, но тогда другие переменные не сохраняются.
В вашей форме отсутствует декларация enctype = "multipart/form-data"
. Вам это нужно, если вы хотите форму загрузки файла.
<form enctype = "multipart/form-data" action = "store.php" method = "POST">
Если я использую enctype, я получаю сообщение об ошибке: столбец «userfile» не может быть нулевым
в вашем почтовом скрипте, var_dump($_POST); exit;
чтобы увидеть, действительно ли что-то было загружено, затем используйте move_uploaded_file
Загруженные файлы доступны в $_FILES
, а не $_POST
Просто измените «uploads/» в атрибуте src вашего изображения и вместо этого укажите на нужную папку — но, похоже, вы не закончили процесс загрузки и перемещения файла.