[PHP]Google Cloud Storage にファイルをアップロードする際にアップロード先のフォルダを指定する

2018年9月6日

はじめに

先日は、「Google Cloud Storage にPHPを使ってファイルをアップロードする」という記事を書きました。

 

Google Cloud Storage にPHPを使ってファイルをアップロードする

 

アップロードするのはこれで問題無いと思います。
次はバケット内にディレクトリを作成し、そこにファイルをアップロードしたいと思います。

 

設定

今回は、「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」がアップロードされてます!

 

いかがでしょか?

今日はこの辺でー

  • この記事を書いた人

カバノキ

印刷会社のWEB部隊に所属してます。 WEB制作に携わってから、もう時期10年になります。 普段の業務では、PHPをメインにサーバーサイドの言語を扱っています。 最近のお気に入りはJavascriptです。 Vue.jsを狂喜乱舞しながら、社内に布教中です。

-GCP
-, , , , ,