質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

0回答

1116閲覧

laravelでAWS S3へ画像をアップしたい

pkbrasegali

総合スコア6

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/08/29 00:38

前提・実現したいこと

laravelでリクエストで渡ってきた画像ファイルをAWS S3へアップしたい

発生している問題・エラーメッセージ

画像をアップしようとすると、下記のエラーが出ます。

The PutObject operation requires non-empty parameter: Bucket

該当のソースコード

php

1's3' => [ 2 'driver' => 's3', 3 'key' => env('AWS_ACCESS_KEY_ID'), 4 'secret' => env('AWS_SECRET_ACCESS_KEY'), 5 'region' => env('AWS_DEFAULT_REGION'), 6 'bucket' => env('AWS_BUCKET'), 7 ],

env

1AWS_ACCESS_KEY_ID=AKIAT~~~~ 2AWS_SECRET_ACCESS_KEY=WLJpg+~~~~~ 3AWS_DEFAULT_REGION=ap-northeast-1 4AWS_BUCKET=umarche-bucket

php

1class ImageController extends Controller 2{ 3public function store(UploadImageRequest $request) 4 { 5 $imageFiles = $request->file('files'); 6 7 if (!is_null($imageFiles)) { 8 foreach ($imageFiles as $imageFile) { 9 $fileNameToStore = ImageService::upload($imageFile); 10 11 Image::create([ 12 'owner_id' => Auth::id(), 13 'filename' => $fileNameToStore 14 ]); 15 } 16 } 17 18 return redirect()->route('owner.images.index') 19 ->with(['message' => '画像登録を実施しました。', 'status' => 'info']); 20}

php

1class ImageService 2{ 3 public static function upload($imageFile) 4 { 5 // dd($imageFile['image']); 6 7 if (is_array($imageFile)) { 8 $file = $imageFile['image']; // 配列なので[‘key’] で取得 9 } else { 10 $file = $imageFile; 11 } 12 $fileName = uniqid(rand().'_'); 13 $extension = $file->extension(); 14 $fileNameToStore = $fileName. '.' . $extension; 15 $resizedImage = InterventionImage::make($file)->resize(1920, 1080)->encode(); 16 17 // バケットの'images'フォルダへアップロード 18 Storage::disk('s3')->put('/images', $file, 'public'); 19 20 return $fileNameToStore; 21 } 22}

試したこと

エラー内容を検索して調べたところ、envファイルの記載のミスで発生するとのこと。
filesystem.phpと.envの記載の確認したが、問題なし。
filesystem.phpに値を直接入れてみたところ、今度は別のエラーが発生。

Missing required client configuration options: region: (string) A "region" configuration value is required for the "s3" service (e.g., "us-west-2"). A list of available public regions and endpoints can be found at http://docs.aws.amazon.com/general/latest/gr/rande.html

補足情報(FW/ツールのバージョンなど)

laravel8
flysystem-aws-s3-v3": "~1.0"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問