В этом уроке мы расскажем как, используя библиотеку DropzoneJS, загрузить одно или несколько изображений в Laravel.
Нам нужно будет выполнить следующие шаги:
- Установка Laravel
- Настройка базы данных в .env
- Создание маршрутов
- Генерация контроллера и модели
- Создание шаблона
- Запуск сервера
1. Установка Laravel
Прежде всего, нам нужно установить Laravel. Используем следующую команду:
composer create-project --prefer-dist laravel/laravel laravelDropzone
2. Настройка базы данных в .env
В этом шаге перейдем в каталог проекта и откроем файл .env, чтобы ввести учетные данные для БД:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=databasename DB_USERNAME=db_username DB_PASSWORD=db_password
3. Создание маршрутов
Нам нужно создать два маршрута: первый показывает наш шаблон, а второй сохраняет изображения в базу данных. Вы можете скопировать нижеуказанные маршруты и вставить их в свой route/web.php
:
Route::get('dropzone/image','ImageController@index'); Route::post('dropzone/store','ImageController@store');
4. Генерация контроллера и модели
В этом шаге мы создадим контроллер и модель, используя нижеприведенную команду в терминале:
php artisan make:model Image -mcr
Она создаст модель Image
и контроллер ImageController
.
Откройте ImageController.php
и поместите в него следующие методы:
namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Image; class HomeController extends Controller { public function index() { return view('image'); } public function store(Request $request) { $image = $request->file('file'); $avatarName = $image->getClientOriginalName(); $image->move(public_path('images'),$avatarName); $imageUpload = new Image(); $imageUpload->filename = $avatarName; $imageUpload->save(); return response()->json(['success'=>$avatarName]); } }
5. Создание шаблона
На этом этапе нам нужно создать blade-шаблон. Перейдите в app/resources/views
и создайте файл image.blade.php
:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Laravel 6 Upload Image Using Dropzone Tutorial</title> <link rel="stylesheet" href="{{asset('css/app.css')}}"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"> <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.5.0/min/dropzone.min.css"> <script src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.5.0/dropzone.js"></script> </head> <body> <div class="container"> <h2>Laravel 6 Upload Image Using Dropzone Tutorial</h2><br/> <form method="post" action="{{url('dropzone/store')}}" enctype="multipart/form-data" class="dropzone" id="dropzone"> @csrf </form> </div> <script type="text/javascript"> Dropzone.options.dropzone = { maxFilesize: 10, renameFile: function (file) { var dt = new Date(); var time = dt.getTime(); return time + file.name; }, acceptedFiles: ".jpeg,.jpg,.png,.gif", addRemoveLinks: true, timeout: 60000, success: function (file, response) { console.log(response); }, error: function (file, response) { return false; } }; </script> </body> </html>
В вышеприведенном файле нам необходимо включить скрипты и css от dropzone. Будем использовать CDN-версии файлов.
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.5.0/min/dropzone.min.css"> <script src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.5.0/dropzone.js"></script>
6. Запуск сервера
Запустим наш локальный сервер разработки. Используйте следующую команду:
php artisan serve
Теперь мы готовы запустить наш пример, выполните команду:
http://localhost:8000/image
или
http://localhost/laravelDropzone/public/image
В итоге все должно работать вот так:
Автор: Tuts Make
Перевод: Алексей Широков
Наш Телеграм-канал — следите за новостями о Laravel.