LoginSignup
21
30

More than 5 years have passed since last update.

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

Posted at

はじめに

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

21
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
30