【问题标题】:How can I create dynamic folder structure on google cloud storage using PHP?如何使用 PHP 在谷歌云存储上创建动态文件夹结构?
【发布时间】:2019-11-02 04:46:26
【问题描述】:

大家好,我是谷歌云存储的新手。 我正在尝试在我的 PHP 项目中使用 Google Cloud Storage - 我想在存储桶中动态创建一个文件夹,并将子文件夹创建到创建的文件夹中。

如何创建它,请帮帮我。

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 嗨,汤姆,我已经尝试过此代码stackoverflow.com/questions/12527969/…
  • 它不起作用?您遇到了什么问题?
  • 我动态创建了一个 URL 并触发它,它没有工作,甚至没有给出任何错误。

标签: google-cloud-storage


【解决方案1】:

您无需按照习惯在驱动器上的文件目录中创建文件夹。在 Cloud Storage 中,一切都是对象,甚至文件夹也是如此。 here 是对目录如何工作的完整解释。

由于一切都是对象,您可以创建文件夹,因为文件只能通过以斜杠“/”或“$folder$”结尾的名称来创建

另一种方法是当您在存储桶中创建文件时,就像将文件夹名称的一部分一样。即,将全名命名为 /folder/subfolder/file

我将使用客户端库在 PHP 中编写一个示例

use Google\Cloud\Storage\StorageClient;

/**
 * Upload a file.
 *
 * @param string $bucketName the name of your Google Cloud bucket.
 * @param string $objectName the name of the object.
 * @param string $source the path to the file to upload.
 *
 * @return Psr\Http\Message\StreamInterface
 */
function upload_object($bucketName, $objectName, $source, $folder)
{
    $storage = new StorageClient();
    $file = fopen($source, 'r');
    $bucket = $storage->bucket($bucketName);
    $object = $bucket->upload($file, [
        'name' => $folder."/".$objectName
    ]);
    printf('Uploaded %s to gs://%s/%s' . PHP_EOL, basename($source), $bucketName, $objectName);
}

如果您想使用 REST API 来执行此操作,请务必转义名称上的特殊字符,以便能够将它们作为 URL 传递

【讨论】:

  • 您好 Jose,您的代码解决了我的问题。它运行良好。非常感谢:)
  • 如果此代码解决了您的问题,请接受答案。
猜你喜欢
  • 2014-07-20
  • 2012-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-25
  • 2016-02-14
  • 2016-01-17
  • 2020-12-21
相关资源
最近更新 更多