-Ở phần trước mình đã giới thiệu với mọi người về Form Request rồi, nhưng đó mới chỉ là gửi nhận dữ liệu dưới dạng text/plain vậy còn gửi và nhận dữ liệu với file thì làm thế nào?
Hôm nay chúng ta sẽ cùng tìm hiểu nốt về upload file trong Laravel
1, Chuẩn Bị.
Tạo View.
-Đầu tiên mình cần tạo ra một view form có một input file và một input submit để thực hiện upload. (name: DemoUpload.blade.php)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Demo Upload File - Toidicode.com</title> <meta name="author" content="ThanhTai"> </head> <body> <form action="{{ url('file') }}" enctype="multipart/form-data" method="POST"> {{ csrf_field() }} <input type="file" name="filesTest" required="true"> <br/> <input type="submit" value="upload"> </form> </body> </html>
Tạo Controller.
Tiếp theo chúng ta cần tạo một controller có tên: FileController.php
<?php namespace AppHttpControllers; use IlluminateHttpRequest; class FileController extends Controller { public function index(){ return view('DemoUpload'); } public function doUpload(Request $request){ //xử lý upload ở đây } }
Tạo Route.
- Cuối cùng là tạo route để điều hướng.
Route::get('file','[email protected]'); Route::post('file','[email protected]');
2, Các Hàm lấy thông tin của file.
-Để cho dễ hiểu mình sẽ làm luôn VD đối với form ở trên.
<?php namespace AppHttpControllers; use IlluminateHttpRequest; class FileController extends Controller { public function index() { return view('file'); } public function doUpload(Request $request) { //Kiểm tra file if($request->hasFile('fileTest')){ $file = $request->filesTest; //Lấy Tên files echo 'Tên Files: '.$file->getClientOriginalName(); echo '<br/>'; //Lấy Đuôi File echo 'Đuôi file: '.$file->getClientOriginalExtension(); echo '<br/>'; //Lấy đường dẫn tạm thời của file echo 'Đường dẫn tạm: '.$file->getRealPath(); echo '<br/>'; //Lấy kích cỡ của file đơn vị tính theo bytes echo 'Kích cỡ file: '.$file->getSize(); echo '<br/>'; //Lấy kiểu file echo 'Kiểu files: '.$file->getMimeType(); } } }
3, Upload File.
-Sau khi đã tạo được View,Controller,route phục vụ cho việc upload file rồi, giờ chúng ta sẽ tiến hành xử lý upload file.
-Để upload files với Request thì Laravel có cung cấp cho chúng ta hàm move() sử dụng với 2 thông số truyền vào:
move($Location,$filesName)
Trong đó:
- $Location: Là thư mục chứa file upload lên Sever.
- $filesName: Là tên mới của file.
VD: Mình sẽ upload form ở VD trên vào thư mục uploads:
<?php namespace AppHttpControllers; use IlluminateHttpRequest; class FileController extends Controller { public function index(){ return view('file'); } public function doUpload(Request $request){ $file = $request->filesTest; $file->move('upload',$file->getClientOriginalName()); //hàm sẽ trả về đường dẫn mới của file trên server } }
4) Lời kết.
-Phần trên mình đã giới thiệu với mọi người về uploadfiles trong Laravel. Còn cách ràn buộc loại files, dung lượng files mình sẽ trình bày tiếp ở các phần sau.
Chúc các bạn học tốt!