Hướng dẫn upload nhiều hình ảnh trong Laravel
Hướng dẫn chi tiết cách upload nhiều hình ảnh trong Laravel, bao gồm việc thiết lập form upload, xử lý dữ liệu trên server và lưu trữ hình ảnh.
Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo form và xử lý việc upload nhiều hình ảnh trong Laravel một cách đơn giản và hiệu quả. Bạn sẽ được hướng dẫn từng bước từ thiết lập form HTML đến lưu trữ hình ảnh vào thư mục trên server.
Mã PHP Laravel:
Bước 1: Thiết lập form upload hình ảnh
Tạo file upload.blade.php
trong thư mục resources/views
:
<!-- resources/views/upload.blade.php -->
<!DOCTYPE html>
<html>
<head>
<title>Upload nhiều hình ảnh trong Laravel</title>
</head>
<body>
<form action="{{ route('upload.images') }}" method="POST" enctype="multipart/form-data">
@csrf
<label for="images">Chọn nhiều hình ảnh:</label>
<input type="file" name="images[]" multiple>
<button type="submit">Upload</button>
</form>
</body>
</html>
Bước 2: Tạo route cho quá trình upload
Trong file web.php
:
// routes/web.php
use App\Http\Controllers\ImageUploadController;
Route::get('/upload-images', [ImageUploadController::class, 'showUploadForm']);
Route::post('/upload-images', [ImageUploadController::class, 'uploadImages'])->name('upload.images');
Bước 3: Tạo controller xử lý upload
Chạy lệnh tạo controller:
php artisan make:controller ImageUploadController
Sau đó, thêm code vào ImageUploadController.php
:
// app/Http/Controllers/ImageUploadController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ImageUploadController extends Controller
{
public function showUploadForm()
{
return view('upload');
}
public function uploadImages(Request $request)
{
$request->validate([
'images' => 'required',
'images.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048'
]);
if ($request->hasfile('images')) {
foreach ($request->file('images') as $image) {
$name = time().'_'.$image->getClientOriginalName();
$image->move(public_path('images'), $name);
}
}
return back()->with('success', 'Hình ảnh đã được upload thành công!');
}
}
Giải thích chi tiết từng dòng code:
-
name="images[]" multiple
: Thiết lập input để cho phép chọn nhiều hình ảnh. -
route('upload.images')
: Định nghĩa URL xử lý upload. -
$request->validate
: Xác thực file upload, đảm bảo mỗi file là hình ảnh và kích thước không vượt quá 2MB. -
foreach ($request->file('images') as $image)
: Lặp qua từng file hình ảnh. -
$image->move(public_path('images'), $name)
: Lưu trữ hình ảnh trong thư mụcpublic/images
.
Yêu cầu hệ thống:
- Laravel phiên bản 8 trở lên
- PHP phiên bản 7.3 trở lên
- Server có cài đặt
composer
Cách cài đặt Laravel:
Sử dụng lệnh sau để cài đặt Laravel:
composer create-project --prefer-dist laravel/laravel upload-images-example
Lời khuyên:
- Đảm bảo thư mục lưu trữ (
public/images
) có quyền ghi. - Kiểm tra file kích thước và loại trước khi upload để tránh lỗi.