目次
はじめに
先日は、「Google Cloud Storage にPHPを使ってファイルをアップロードする」という記事を書きました。
https://www.kabanoki.net/2312
アップロードするのはこれで問題無いと思います。
次はバケット内にディレクトリを作成し、そこにファイルをアップロードしたいと思います。
設定
今回は、「foo/bar」というディレクトリ構造に「img.png」を設置します。
以下サンプルソース
<?php require __DIR__ . '/vendor/autoload.php'; use Google\Cloud\Storage\StorageClient; // プロジェクトIDを入力 $projectId = 'hoge-23rfwe4'; // 認証鍵までのディレクトリを入力 $auth_key = './iam/kabanoki-bf1cc-f7706c743b95.json'; // バケットの名前を入力 $bucket_name = 'kabanoki'; // アップロードファイル名を入力 $file_name = 'img.png'; // アップロードファイルまでのディレクトリパスを入力 $path = 'file/'; // バケット内に作成したいディレクトリを指定する $dir = 'foo/bar/'; $storage = new StorageClient([ 'projectId' => $projectId, 'keyFile' => json_decode(file_get_contents($auth_key, TRUE), true) ]); $bucket = $storage->bucket($bucket_name); $options = [ 'name' => $dir.$file_name ]; $object = $bucket->upload( fopen("{$path}{$file_name}", 'r'), $options ); echo "[{$path}{$file_name}]を[{$dir}{$file_name}]にアップロード完了";
簡単なソースなので、すぐに分かると思いますが、 $bucket->upload()
に設定するoption
にファイル名を指定するパラメーターがあります。
そこにディレクトリも合わせて設定すると、バケット内にディレクトリ構造に格納されたファイルがアップロードされます。
確認
さて上記のシステムを走らせて、ブラウザに「[file/img.png]を[foo/bar/img.png]にアップロード完了」と表示されたら完了です。
バケット内を確認してみると・・・
「foo/bar」に「img.png」がアップロードされてます!
いかがでしょか?
今日はこの辺でー