21. Lấy file được upload (Retrieving uploaded file) (ok)

https://viblo.asia/p/tap-16-request-laravel-aWj534Y8K6m

Bạn có thể truy cập tới các file được upload từ lớp Illuminate\Http\Request thông qua method file, hoặc theo cú pháp thuộc tính (nếu input đó có type là file). Phương thức này sẽ trả về lớp khởi tạo Illuminate\Http\UploadedFile, lớp này sẽ kế thừa class SplFileInfo của PHP, cung cấp một số phương thức để tương tác với file.

Để bắt đầu thử nghiệm các phương thức bên dưới, ta cần build một HTML form đã. Mình sẽ lấy blade view form và controller FormController ở trên. Tại blade view form, các bạn xây dựng form HTML như thế này:

<form action="/post" method="POST" enctype="multipart/form-data">
    @csrf 

    <div>
        <p>Avatar</p>
        <input type="file" name="avatar">
    </div>

    <br>

    <div>
        <button type="submit">Upload</button>
    </div>
</form>

Nên nhớ phải thêm enctype="multipart/form-data" để có thể gửi input data file.

Tiếp theo là code xử lý logic tại post của FormController. Đầu tiên ta hãy thử dump xem dữ liệu ta nhận được từ request là gì.

public function post(Request $request)
{
    dd($request->all());
}

Rồi nạp server và thử đính kèm một tệp ảnh rồi nhấn "Upload" xem, kết quả bạn sẽ nhận được sẽ là:

Như các bạn thấy, ngoài _token ra, chúng ta còn nhận được avatar gán với object UploadedFile giống như ta đã đề cập ở trên.

Bạn có thể sử dụng multiple upload file, thay vì sẽ chứa một object UploadedFile thì nó sẽ là mảng chứa các object UploadedFile.

Last updated