Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

【Laravel5】Storageファサードでお手軽S3アップロード

More than 5 years have passed since last update.

はじめに

Laravel5から、ファイルシステムとしてクラウドストレージ(S3 or Rackspace)を簡単に利用できるようになりました。
保存先に依らず同じメソッドでファイルの操作を出来るので、非常に便利ですね。

使用方法

まずは、S3を使用するためのパッケージを登録します。

composer.json
  "require": {
    "laravel/framework": "5.0.*",
    "league/flysystem-aws-s3-v2": "~1.0"
  },

$ composer update

次に、S3の設定を記述します。.envに記述して切り替えられるようにしておくと良いでしょう。

config/filesystems.php
    'disks' => [

        'local' => [
            'driver' => 'local',
            'root'   => storage_path().'/app',
        ],

        's3' => [
            'driver' => 's3',
            'key'    => env('S3_ACCESS_KEY'),
            'secret' => env('S3_SECRET_KEY'),
            'region' => env('S3_REGION'),
            'bucket' => env('S3_BUCKET'),
        ],
                ・・・
    ],
.env
S3_ACCESS_KEY=your-key
S3_SECRET_KEY=your-secret
S3_REGION=your-region
S3_BUCKET=your-bucket

設定はこれだけです!後はgetなりputなり簡単に出来ます。

$disk = Storage::disk('s3');
// ファイルのアップロード
$disk->put('hoge.jpg', $contents);
// ファイルの取得
$contents = $disk->get('hoge.jpg');
// ファイルのコピー
$disk->copy('hoge.jpg', 'fuga.jpg');
// ファイルの削除
$disk->delete(['hoge.jpg', 'fuga.jpg']);

他にも移動やサイズ取得等いろいろ出来ます。詳しくは公式ドキュメントを参照してください。
http://laravel.com/docs/5.0/filesystem

また、league/flysystemではS3とRackspace以外のアダプタも用意されており、ServiceProviderの設定のみで簡単に利用ストレージを拡張できるようです。
https://github.com/GrahamCampbell/Laravel-Flysystem
拡張方法も公式ドキュメントに書かれていますね。
http://laravel.com/docs/5.0/filesystem#custom-filesystems

yamato
Findyでエンジニア兼プロダクトマネージャー見習いをしています。野球、 音楽フェス、散歩、サウナ、お酒、焼き鳥が好きです。
https://findy-code.io/
findy-inc
エンジニア・採用担当者向けの転職サービスや案件紹介サービスを提供しています。
https://findy-code.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away