やっほー
【AWS SDK】PHP(Laravel)でS3へ画像アップロードを行う方法!

【AWS SDK】PHP(Laravel)でS3へ画像アップロードを行う方法!

  • 2019年7月28日
  • 2021年3月16日
  • AWS
  • 122view
AWS 【AWS SDK】PHP(Laravel)でS3へ画像アップロードを行う方法!

AWS SDKでS3へ画像アップロードってどうやるんや?

やり方は何となく分かりますが、いまいち分かりにくいサイトが多い。。

てことで今回は、AWS SDKでS3へ画像アップロードを行う方法を解説します!

前提

  • ライブラリ「aws-sdk」がインストールされていること

S3へ画像アップロードをする前に

S3へ画像をアップロードをする前に考えなくてはならないことがあります。

ファイルはクライアントで選択したものをサーバ(Laravel)で処理することになりますが、どういった形式でファイル情報を送信するかを決めなければなりません

方法としては以下の2つです。

  • multipart/form-dataで送信
  • json形式で送信

 

今回は、json形式で送信することにします。

画像をJSON形式で送信するために

画像をjson形式で送信するには、ファイル情報をBase64でエンコードする必要があります

つまり、サーバ側ではBase64でエンコードされたファイル情報を受け取ることを前提とします。

注意点として、Base64でエンコードすると、ファイルの先頭に「data:image/png;base64,」という文字列が付きます。これは画像アップロード時に不要なので削除する必要があります。
今回は、クライアントで上記文字列を削除している前提で考えます。

画像アップロード方法

上記がPHP(Laravel)での画像アップロードのソースコードになります。コード自体はシンプルです。

putObjectの概要

putObjectを使用して画像アップロードを行いますが、以下がざっくり概要になります。

Bucket S3のバケット名
※Bucket名が「sample」の場合、「sample」と指定します。
Key ファイルアップロード先フォルダ&ファイル名
※ファイルアップロード先が「sample/img/」でファイル名が「sample.png」の場合、「img/sample.png」と指定します。
Body ファイル
※今回はBase64でエンコードされたファイル情報をデコードしています。

まとめ

画像のアップロード自体は簡単ですが、どちらかというとファイルのBase64エンコードとかの方がややこしいですね。

ファイルアップロードはシステム要件として求められることが多いですが、分かりにくさもあります。

今回の記事があなたのためになれば幸いです。

画像取得方法はこちら

AWS SDKでS3から画像を取得するのってどうやるんや? てことで今回は、AWS SDKでS3から画像を取得する方法を解説します! [afTag id=15791] 前提 ライブラリ「aws-sdk」がインスト[…]

【AWS SDK】PHP(Laravel)でS3から画像を取得する方法!
認証情報取得方法はこちら

aws-sdkを使用してEC2のインスタンスプロファイル情報を取得したい! 認証情報を取得する方法はいくつかあります。 ただ、EC2にデプロイしたアプリからAWSの認証情報を取得する方法でベストなのは、IAMロールの権限を取得す[…]

【aws-sdk】EC2インスタンスプロファイル情報を取得する方法
CloudFrontキャッシュ削除方法はこちら

AWS CloudFrontのキャッシュをSDKで削除してみたい!! ってことで今回は、AWS SDKでCloudFrontのキャッシュを削除する方法を解説します! 前提 ライブラリ「aws-sdk」がインストールされてい[…]

【AWS SDK】CloudFrontのキャッシュを削除する方法!
【AWS SDK】PHP(Laravel)でS3へ画像アップロードを行う方法!
フォローしてもらえると泣いて喜びます