Định nghĩa trường tải lên trong biểu mẫu
Trước tiên, chúng ta cần thêm một trường <input type="file">
vào biểu mẫu HTML để cho phép người dùng chọn tệp tin hoặc hình ảnh để tải lên.
<form method="POST" action="{{ route('upload') }}" enctype="multipart/form-data">
@csrf
<input type="file" name="file">
<button type="submit">Tải lên</button>
</form>
Xử lý yêu cầu tải lên
Trong controller Laravel, chúng ta có thể xử lý yêu cầu tải lên trong một phương thức. Sử dụng đối tượng Illuminate\Http\Request
, chúng ta có thể truy cập tệp tin đã tải lên và thực hiện các thao tác xử lý cần thiết.
use Illuminate\Http\Request;
public function upload(Request $request)
{
if ($request->hasFile('file')) {
$file = $request->file('file');
// Xử lý tệp tin tại đây
}
}
Lưu trữ tệp tin
Laravel cung cấp phương thức store
để lưu trữ tệp tin đã tải lên. Chúng ta chỉ cần gọi phương thức này trên đối tượng tệp tin và cung cấp đường dẫn nơi muốn lưu trữ tệp tin.
$path = $file->store('uploads');
Xử lý hình ảnh
Nếu chúng ta cần xử lý hình ảnh, chẳng hạn như thay đổi kích thước, cắt hoặc áp dụng bộ lọc, chúng ta có thể sử dụng thư viện xử lý hình ảnh như Intervention Image. Đầu tiên, cài đặt gói Intervention Image bằng Composer:
composer require intervention/image
Sau đó, chúng ta có thể sử dụng các phương thức của thư viện để xử lý hình ảnh.
use Intervention\Image\Facades\Image;
public function upload(Request $request)
{
if ($request->hasFile('file')) {
$file = $request->file('file');
$image = Image::make($file);
// Xử lý hình ảnh tại đây
}
}
Hiển thị tệp tin và hình ảnh đã tải lên
Để hiển thị tệp tin và hình ảnh đã tải lên trong giao diện người dùng, chúng ta có thể tạo URL công khai cho chúng và sử dụng trong HTML hoặc CSS. Laravel cung cấp các phương thức hỗ trợ để tạo URL công khai cho các tệp tin đã lưu trữ.
$url = asset('storage/' . $path);
Chúng ta có thể sử dụng biến $url
trong HTML hoặc CSS để hiển thị tệp tin hoặc hình ảnh đã tải lên.
Với các bước trên và sử dụng các tính năng tích hợp sẵn của Laravel, bạn có thể tải lên và xử lý tệp tin và hình ảnh một cách linh hoạt và dễ dàng trong ứng dụng Laravel của mình.