Cara Menyimpan Response Menjadi File dari Laravel Http Request
Laravel menyediakan HTTP client (Guzzle) untuk mengirim request HTTP ke URL tertentu. Response dari request tersebut dapat disimpan ke dalam file dengan sink method.
Syntaxnya:
Http::sink('tempat_simpan_file')
->get('url')
Untuk menyimpan file ke direktori storage gunakan helper storage_path. Contoh:
Http::sink(storage_path('app/downloads/nama_file.png'))
->get('url');
Contoh: Mendownload gambar dari URL:
use Illuminate\Support\Facades\Http;
Http::sink(storage_path('app/downloads/dog.png'))
->get('https://picsum.photos/id/237/200/300');
Contoh: Mendownload avatar user dari oauth (menggunakan socialite):
use Laravel\Socialite\Socialite;
use Illuminate\Support\Facades\Http;
$user = Socialite::driver('google')->user();
$filePath = storage_path('app/user-avatars/' . basename($user->getAvatar()));
Http::sink($filePath)
->get($user->getAvatar());