LoginSignup
11

More than 5 years have passed since last update.

【Laravel5】今までAWSにファイルをアップロードしていたものをGoogle Cloud Store(GCS)にアップロードする

Last updated at Posted at 2016-06-01

前提

以下の記事を参考にAWSにアップロードするように実装します。
http://qiita.com/yamato/items/7b8aab6e1f3556e9aadb

今までAWSにアップロードしていたのですがふとGCSにアップロードをしてみたくなり、設定を変更します。

GCSにはAWSの互換APIが実装されているので、AWSへのアップロードの実装からほぼ変更なくGCSへアップロードが可能です。

GCS側の設定

Google Cloud PlatformのコンソールからStorageでバケットを作成しておきます。
(今回は仮にtestというバケットを作成したとします。なお、バケットはCloud Storageの中で固有である必要があるため他の人がすでに作っているバケットは作成できません。なので実際にはtestというバケットも作れないと思います。

その後設定->相互運用性から相互アクセスをONにして、相互運用ストレージアクセスキーを作成します。

gcp.png
これがAWSのACCESS_KEY,SECRET_KEYにあたります。

GCSの設定周りはこの記事が参考になります。
http://qiita.com/ngyuki/items/fd3bb47cd4aeb2f61fec

envの設定

上記記事のように実装した場合ACCESS_KEY,SECRET_KEYはenvに指定するようにしてあるので、envに指定します。

.env
S3_ACCESS_KEY=your-GCS-key
S3_SECRET_KEY=your-GCS-secret
S3_BUCKET=your-bucket (今回はtest)

base_urlの設定

config/filesystems.phpのs3の設定にbase_urlを指定します。
なお、driverはs3のままで大丈夫です。

config/filesystems.php
        's3' => [
            'driver' => 's3',
            'key'    => env('S3_ACCESS_KEY'),
            'secret' => env('S3_SECRET_KEY'),
            'region' => env('S3_REGION'),
            'bucket' => env('S3_BUCKET'),
                        'base_url' => 'https://storage.googleapis.com'

        ],
                ・・・
    ],

GCSにアップロードする

Laravelのファイルシステム
にあるメソッドを使うことでGCSにアップロード/削除等ができます。

$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']);

画像のURL

画像のURLは以下の2パターンあります。

1. https://storage.googleapis.com/{bucket名}/{ディレクトリ名}/{ファイル名}
2. https://{bucket名}.storage.googleapis.com/{ディレクトリ名}/{ファイル名}
(どちらともhttpでも使用可能です)

AWSのURLは

https://{bucket名}.s3.amazonaws.com/{ディレクトリ名}

の形式で、URLを使用してファイル名などを使用するメソッドを実装していた場合は、 2.のURLを使うといいでしょう。

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
11