月間29,000PV達成! 収益は毎日発生中! ギランバレー症候群に関する情報を集めています

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

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

 

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

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

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

 

 

環境

言語:PHP

サービス:AWS S3

 

 

前提

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

 

 

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

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

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

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

・multipart/form-dataで送信

・json形式で送信

 

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

 

 

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

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

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

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

 

 

画像アップロード方法

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

 

 

Advertisement

 

putObjectの概要

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

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

 

 

まとめ

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

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

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

 

Travelerを知らないの?