Laravel 8: Загрузка изображения в базу данных и каталог хранилища с проверкой
В этом руководстве вы узнаете, как загрузить изображение в laravel 8 в базу данных и каталог хранилища с проверкой.
А также, как проверить тип, размер, размерность изображения mime и т. д. на контроллере laravel с помощью правил проверки laravel.
В этом руководстве по загрузке изображения в Laravel 8 мы создадим форму загрузки изображения в Laravel 8 с проверкой, которая будет использоваться для сохранения изображения в базе данных и каталоге хранилища.
Загрузка изображения в Laravel 8
Используйте следующие шаги, чтобы загрузить изображение в общедоступное хранилище и каталог в приложениях laravel 8:
Шаг 1 - Создание модели и миграция
Откройте командную строку и запустите в ней следующую команду, чтобы создать модель и файл миграции для формы:
php artisan make:model Photo -m
После этого откройте файл create_photos_table.php в каталоге LaravelImage/database/migrations/ и обновите функцию up() следующим кодом:
public function up()
{
Schema::create('photos', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('path');
$table->timestamps();
});
}
Затем снова откройте командную строку и выполните следующую команду для создания таблиц в базе данных:
php artisan migrate
Шаг 2 - Создайте маршруты
На этом этапе откройте файл web.php из директории routes и обновите следующие маршруты в файле web.php:
use App\Http\Controllers\UploadImageController;
Route::get('upload-image', [UploadImageController::class, 'index']);
Route::post('save', [UploadImageController::class, 'save']);
Шаг 3 - Создайте контроллер с помощью Artisan Command
На этом этапе выполните следующую команду в командной строке, чтобы создать файл контроллера:
php artisan make:controller UploadImageController
После этого перейдите в app/http/controllers и откройте файл UploadImageController.php. Обновите в нем следующий код:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Image;
class UploadImageController extends Controller
{
public function index()
{
return view('image');
}
public function save(Request $request)
{
$validatedData = $request->validate([
'image' => 'required|image|mimes:jpg,png,jpeg,gif,svg|max:2048',
]);
$name = $request->file('image')->getClientOriginalName();
$path = $request->file('image')->store('public/images');
$save = new Photo;
$save->name = $name;
$save->path = $path;
$save->save();
return redirect('upload-image')->with('status', 'Изображение было загружено');
}
}
Следующая строка кода загрузит изображение в каталог изображений:
$path = $request->file('image')->store('public/images');
Шаг 4 - Создайте Blade View
Теперь создайте форму загрузки изображения в файле представления, чтобы отобразить форму загрузки изображения и отправить ее в базу данных.
Итак, перейдите к resources/views и создайте image.blade.php и обновите в нем следующий код:
<!DOCTYPE html>
<html>
<head>
<title>Laravel 8 Uploading Image</title>
<meta name="csrf-token" content="{{ csrf_token() }}">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<div class="container mt-5">
@if(session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
<div class="card">
<div class="card-header text-center font-weight-bold">
<h2>Laravel 8 Upload Image Tutorial</h2>
</div>
<div class="card-body">
<form method="POST" enctype="multipart/form-data" id="upload-image" action="{{ url('save') }}" >
<div class="row">
<div class="col-md-12">
<div class="form-group">
<input type="file" name="image" placeholder="Выбрать изображение" id="image">
@error('image')
<div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
@enderror
</div>
</div>
<div class="col-md-12">
<button type="submit" class="btn btn-primary" id="submit">Отправить</button>
</div>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
Следующий ниже код отобразит сообщение об ошибке проверки в файле представления:
@error('image')
<div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
@enderror
Шаг 5 - Создайте каталог изображений в Storage/app/public
Теперь создайте каталог изображений в каталоге storage/app/public поскольку следующая строка кода загрузит изображение в каталог изображений, который находится внутри каталога storage/app/public/:
$path = $request->file('image')->store('public/images');
Шаг 6 - Запустите сервер разработки
Последний шаг, откройте командную строку и выполните следующую команду, чтобы запустить сервер разработки:
php artisan serve
Затем откройте браузер и посетите следующий URL:
http://127.0.0.1:8000/image-upload
Комментариев 1
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.