Как адаптировать php код загружающий изображение?
У меня есть код который должен загружать картинку в создании товара. У меня возникла проблема с работоспособностью загрузки картинки, а в конечном итоге мне нужно чтобы в месте где должна загружаться картинка была возможность загрузить видео в формате mp4, я скинул только часть кода но, весь код был реализован с помощью урока по этой ссылке, в ней 11 пункт посвящен загрузке картинок. https://only-to-top.ru/blog/programming/2021-01-25-php-oop-mysql.html
<?php
// подключим файлы, необходимые для подключения к базе данных и файлы с объектами
include_once "config/database.php";
include_once "objects/product.php";
include_once "objects/category.php";
// получаем соединение с базой данных
$database = new Database();
$db = $database->getConnection();
// создадим экземпляры классов Product и Category
$product = new Product($db);
$category = new Category($db);
// установка заголовка страницы
$page_title = "Создание описания";
require_once "layout_header.php";
?>
<div class="right-button-margin">
<a href="index.php" class="btn btn-default pull-right">Просмотр всего </a>
</div>
<!-- Здесь будет PHP код -->
<?php
// если форма была отправлена
if ($_POST)
{
// установим значения свойствам товара
$product->name = $_POST["name"];
$product->price = $_POST["price"];
$product->description = $_POST["description"];
$product->category_id = $_POST["category_id"];
$image = !empty($_FILES["image"]["name"])
? sha1_file($_FILES["image"]["tmp_name"]) . "-" . basename($_FILES["image"]["name"]) : "";
$product->image = $image;
// создание товара
if ($product->create()) {
echo '<div class="alert alert-success">Товар был успешно создан.</div>';
}
// если не удается создать товар, сообщим об этом пользователю
else {
echo '<div class="alert alert-danger">Невозможно создать товар.</div>';
}
// пытаемся загрузить отправленный файл
// метод uploadPhoto() вернет сообщение об ошибке, в случае неудачи
echo $product->uploadPhoto();
}
?>
<!-- HTML-формы для создания товара -->
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>"
method="post"
enctype="multipart/form-data"
>
<table class="table table-hover table-responsive table-bordered">
<tr>
<td>Название</td>
<td><input type="text" name="name" class="form-control" /></td>
</tr>
<tr>
<td>Цена</td>
<td><input type="text" name="price" class="form-control" /></td>
</tr>
<tr>
<td>Описание</td>
<td><textarea name="description" class="form-control"></textarea></td>
</tr>
<tr>
<td>Изображение</td>
<td><input type="file" name="image" /></td>
</tr>
<?php
// читаем категории товаров из базы данных
$stmt = $category->read();
// помещаем их в выпадающий список
echo "<select class='form-control' name='category_id'>";
echo "<option>Выбрать категорию...</option>";
while ($row_category = $stmt->fetch(PDO::FETCH_ASSOC)) {
extract($row_category);
echo "<option value='{$id}'>{$name}</option>";
}
echo "</select>";
?>
</td>
</tr>
<tr>
<td></td>
<td>
<button type="submit" class="btn btn-primary">Создать</button>
</td>
</tr>
</table>
</form>
<?php // подвал
require_once "layout_footer.php";
?>
Так же есть функция загрузки файла изображения
function uploadPhoto()
{
$result_message = "";
// если изображение не пустое, пробуем загрузить его
if ($this->image) {
// функция sha1_file() используется для создания уникального имени файла
$target_directory = "uploads/";
$target_file = $target_directory . $this->image;
$file_type = pathinfo($target_file, PATHINFO_EXTENSION);
// сообщение об ошибке пусто
$file_upload_error_messages = "";
}
// убеждаемся, что файл - изображение
$check = getimagesize($_FILES["image"]["tmp_name"]);
if ($check !== false) {
// отправленный файл является изображением
} else {
$file_upload_error_messages .= "<div>Отправленный файл не является изображением.</div>";
}
// проверяем, разрешены ли определенные типы файлов
$allowed_file_types = array("jpg", "jpeg", "png", "gif");
if (!in_array($file_type, $allowed_file_types)) {
$file_upload_error_messages .= "<div>Разрешены только файлы JPG, JPEG, PNG, GIF.</div>";
}
// убеждаемся, что файл не существует
if (file_exists($target_file)) {
$file_upload_error_messages .= "<div>Изображение уже существует. Попробуйте изменить имя файла.</div>";
}
// убедимся, что отправленный файл не слишком большой (не может быть больше 1 МБ)
if ($_FILES["image"]["size"] > (1024000)) {
$file_upload_error_messages .= "<div>Размер изображения не должен превышать 1 МБ.</div>";
}
// убедимся, что папка uploads существует, если нет, то создаём
if (!is_dir($target_directory)) {
mkdir($target_directory, 0777, true);
}
// если $file_upload_error_messages всё ещё пуст
if (empty($file_upload_error_messages)) {
// ошибок нет, пробуем загрузить файл
if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) {
// фото загружено
} else {
$result_message .= "<div class='alert alert-danger'>";
$result_message .= "<div>Невозможно загрузить фото.</div>";
$result_message .= "<div>Обновите запись, чтобы загрузить фото снова.</div>";
$result_message .= "</div>";
}
}
// если $file_upload_error_messages НЕ пусто
else {
// это означает, что есть ошибки, поэтому покажем их пользователю
$result_message .= "<div class='alert alert-danger'>";
$result_message .= "{$file_upload_error_messages}";
$result_message .= "<div>Обновите запись, чтобы загрузить фото.</div>";
$result_message .= "</div>";
}
return $result_message;
}
}