プロフィールお問い合わせ札幌でソフトウェア開発、アフィリエイトセミナーを行っています。2019年9月13日プロミディア合同会社の斉藤です。S3に画像ファイルをアップロードする方法について調査することにしました。S3に関する情報は調べれば多数見つかるのですが、S3について別に詳しくなりたくなくてとりあえず使えればいいというレベルの解説をしているサイトがなかったのでここに残します。記事の最後でGitHubに上げたサンプルプログラムをダウンロードできるようにしておきましたので、よかったらそちらもご参照ください。大まかにやる事を先に列挙しておきます。S3のバケットを作成する・バケットのアクセス権限を公開に変更するLaravelプロジェクト・composerコマンドでflysystem-aws-s3-v3を導入する・.envファイルにAWSの設定値を設定するAWS側の設定まずはAWS側をいじって、画像ファイルの格納場所を用意します。S3でファイルを格納する場所をバケットと呼びます。初期状態ではバケットは作成されていませんので、AWSの管理画面から作成します。クリックで大きくなりますバケット名、国名(英語に変換したもの)は後ほどLaravel側の設定項目に使用します。アクセス権限の変更ここで重要となるのは「アクセス権限」の項目です。バケットを作成した直後はアクセスが非公開となっており、ここを公開に変更しないと、画像ファイルを格納しても外から見えません。いう訳で、以下変更手順です。下のみチェックを外す。バケットポリシーの設定バケットポリシーを設定しなくてはいけないのですが、コピペ用コードを置いたのでバケット名だけ変更してご利用ください。※コピペしてバケット名だけご自身の内容に変更してください。"arn:aws:s3:::バケット名/*"}]}アクセスキー&シークレットキーLaravelからS3を使うためにはAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYの情報も必要となります。これらの取得方法はAWSの公式ページを参照してください。私もこのページの手順通りやって取得できました。Laravel側の設定AWS側の設定が終わったら、次はLaravel側で設定作業を行います。flysystem-aws-s3-v3を導入Laravelプロジェクトの直下で下記のコマンドを実行します。~1.0完了まで数分かかりますのでしばらく放っておいてください。完了するとfilesystems.phpのdisksにs3の項目が追加されます。env('AWS_URL'),],],.envを編集.envにAWSの設定項目が追加されているので、ここを埋めます。S3へファイルの格納と参照するコードを解説します。言っても、この時点ですでに面倒な設定が完了しているので、あとは普通にStorageを使うだけです。S3に画像ファイルを格納する格納方法はStorageのインスタンスをS3で取得してputします。S3に格納されている画像ファイルを参照する保存したファイルの存在チェックを行い、あればそのURLを取得します。$disk->url($saveFileName);}ダウンロード今回解説したサンプルプログラムはGitHub上からダウンロードできます。貞義プロミディア合同会社代表。会社員としてソフトウェア開発を約13年経験後、PE-BANK所属のフリーランスエンジニアとして独立。その2年半後に法人成りし、合同会社を設立。現在は企業に常駐してソフトウェア開発をしつつ、収益を目的としてWebサイト作成、セミナーを開催している。2020/02/01Laravelでランキング集計を定期的に実行する方法2019/09/28合同会社の決算。プログラミングauthorPREVVBAでスクレイピング。426ビューVBAでスクレイピング。決算の話し2019/09/28合同会社の決算。税理士の話し2019/9/16一人だけの合同会社が税理士に支払う費用は?私の場合は決算込みで月額15,000円です。一人だけの合同会社が税理士に支払う費用は?私の場合は決算込みで月額15,000円です。札幌でソフトウェア開発、アフィリエイトセミナーを行っています。