System time(GMT+7): 16:12:15 06/02/2023

Hướng dẫn upload file lên drive sử dụng google api - laravel

Cấu hình tài khoản google developer

Enable google drive api trong library

Chọn Credentials -> tạo 1 Oauth client ID , trong phần URIs điền link này vào: https://developers.google.com/oauthplayground (ko thừa hoặc thêm ký tự nào ở phía cuối link). Lưu lại ClientID và ClientSecret ở phía góc bên phải lại để dùng cho phần cấu hình file .env

 

Truy cập vào link https://developers.google.com/oauthplayground , ở step 1 chọn theo thứ tự như trong hình (nút ở số 5 sẽ enable khi điền xong 2 trường ở số 4) , sau khi click vào số 5 sẽ có yêu cầu xác minh quyền đối với tài khoản google , cứ cho phép hết là được.

 

Click vào nút: exchange authorization code for tokens để lấy RefreshToken ở ô phía dưới (đồng thời check vào checkbox như trong hình)

Thêm các dòng sau vào file .env , với các tham số đã có tương ứng từ các bước trên:


FILESYSTEM_CLOUD=google

GOOGLE_DRIVE_CLIENT_ID=

GOOGLE_DRIVE_CLIENT_SECRET=

GOOGLE_DRIVE_REFRESH_TOKEN=

GOOGLE_DRIVE_FOLDER= nhập tên folder drive vào đây (nếu folder ko tồn tại , sẽ tự động có folder mới được tạo với tên điền ở đây)

Cấu hình + code laravel

Cài đặt package: https://github.com/masbug/flysystem-google-drive-ext

Tạo 1 file Providers mới (hoặc khai báo luôn trong file AppServiceProvider cũng được) với đoạn code sau cho vào hàm boot():

 

Code upload 1 file trên local lên drive:

$filename = 'test.png';

$filedata = \File::get(storage_path('app/public/'.$filename)); /* truyền đường dẫn tới file cần upload vào đây */

\Storage::disk('google')->put('ten_file',$filedata); /* Nếu muốn file ở trạng thái public thì truyền thêm tham số thứ 3 là 'public' */

Chi tiết các hàm khác thao tác với drive có thể xem TẠI ĐÂY

Bài viết demo trên laravel 9.0 , php 8.0