Laravelのルートディレクトリにpackagesディレクトリを作って構成する場合、その中に置いたクラスファイルはそのままでは参照できません。 問題 以下の場所にあるSampleClass.phpの…
LaravelにはGuzzleをラッパーしたHttpクライアントが標準で備えられています。
ただし、公式のドキュメントは詳しく記載されておらず、基本的な使い方しか載っていません。
リクエストした結果、ファイルをダウンロードする場合の方法と、
Storageを使ったAWS S3へ保存する方法を記載します。
サンプルコード
use Illuminate\Support\Facades\Http; public function createPdf() { // 重複しない保存先を取得 /tmp $tempName = tempnam(sys_get_temp_dir(), 'pdf_'); $response = Http::sink($tempName) ->post('http://some-endpoint'); // AWS s3に保存 Storage::disk('s3')->putFile('drive/files', new File($tempName)); return $response; }
ポイント
Guzzleはリクエストする前に保存先のパス・Streamを指定しておくことでファイルが保存されます。
生粋のGuzzleはパラメータで指定しますが、Laravelのラッパーが入っているのでsink
メソッドで指定した後でリクエストを実行します。
コメントを書く