DANH MỤC: Laravel

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 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 App\Http\Controllers;

use Illuminate\Http\Request;

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','FileController@index');
Route::post('file','Filecontroller@doUpload');

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 App\Http\Controllers;

use Illuminate\Http\Request;

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 App\Http\Controllers;

use Illuminate\Http\Request;

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!

Nguồn: Toidicode.com

Thông tin tác giả

Vũ Thanh Tài

Vũ Thanh Tài

The best way to learn is to share

Hãy tham gia group facebook để cùng giao lưu chia sẻ kiến thức! Tham Gia