07/09/2018, 17:35

Bài 19: Upload files trong Laravel

-Ở 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 ...

-Ở 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!

0