@ruslan_f0x

Как загрузить изображение в Laravel?

Приветствую!
Написал код в php для загрузки изображения, решил сделать это на Laravel и не пойму как это сделать.

код home.blade.php
@extends('layouts.app')

@section('content')
    <div class="container">
        <div class="row justify-content-center">
            <div class="col-md-8">
                <div class="card">
                    <div class="card-header">Личный кабинет</div>
                    <div class="card-body">
                        Обычный пользователь
                    </div>

                </div>
            </div>
        </div>
    </div>
    <form action="../../image_php/file-handler.php" method="post" enctype="multipart/form-data">
        <input type="file" name="upload">
        <button>Загрузить</button>
    </form>

@endsection


код файла file-handler.php
<?php



$filePath = $_FILES['upload']['tmp_name'];
$errorCode = $_FILES['upload']['error'];


if ($errorCode !== UPLOAD_ERR_OK || !is_uploaded_file($filePath)) {

    
    $errorMessages = [
        UPLOAD_ERR_INI_SIZE => 'Размер файла превысил значение upload_max_filesize в конфигурации PHP.',
        UPLOAD_ERR_FORM_SIZE => 'Размер загружаемого файла превысил значение MAX_FILE_SIZE в HTML-форме.',
        UPLOAD_ERR_PARTIAL => 'Загружаемый файл был получен только частично.',
        UPLOAD_ERR_NO_FILE => 'Файл не был загружен.',
        UPLOAD_ERR_NO_TMP_DIR => 'Отсутствует временная папка.',
        UPLOAD_ERR_CANT_WRITE => 'Не удалось записать файл на диск.',
        UPLOAD_ERR_EXTENSION => 'PHP-расширение остановило загрузку файла.',
    ];

    
    $unknownMessage = 'При загрузке файла произошла неизвестная ошибка.';


    $outputMessage = isset($errorMessages[$errorCode]) ? $errorMessages[$errorCode] : $unknownMessage;

    
    die($outputMessage);
}



$fi = finfo_open(FILEINFO_MIME_TYPE);


$mime = (string) finfo_file($fi, $filePath);


if (strpos($mime, 'image') === false) die('Можно загружать только изображения.');


$image = getimagesize($filePath);


$limitBytes  = 1024 * 1024 * 5;
$limitWidth  = 1280;
$limitHeight = 768;

if (filesize($filePath) > $limitBytes) die('Размер изображения не должен превышать 5 Мбайт.');
if ($image[1] > $limitHeight)          die('Высота изображения не должна превышать 768 точек.');
if ($image[0] > $limitWidth)           die('Ширина изображения не должна превышать 1280 точек.');


$name = md5_file($filePath);


$extension = image_type_to_extension($image[2]);


$format = str_replace('jpeg', 'jpg', $extension);


if (!move_uploaded_file($filePath, __DIR__ . '/pics/' . $name . $format)) {
    die('При записи изображения на диск произошла ошибка.');
}


Прошу помочь и объяснить, если не сложно)
  • Вопрос задан
  • 503 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы