【问题标题】:How to list files stored in google cloud storage bucket in wordpress post?如何在 wordpress 帖子中列出存储在谷歌云存储桶中的文件?
【发布时间】:2020-04-22 01:00:01
【问题描述】:

是否可以列出我的 Google Cloud Storage 存储分区中可用的文件?

有没有相关的插件?

我想将文件夹名称作为参数传递,(有点像短代码),然后短代码可以从文件夹中获取文件并列出它们,如果可能的话,使用元数据。我相信会有一个插件可用,或者有一堆插件可以解决问题。

如果没有任何插件,请指出我应该学习哪些 PHP 函数来自己做的正确方向。

    if ( function_exists( 'switch_to_blog' ) ) switch_to_blog(1);
$murl = get_option( 'siteurl' ) . $mdir;
if ( function_exists( 'restore_current_blog' ) ) restore_current_blog();
// MP3 folder relative URL
$mrelative = preg_replace( '/^https?\:/m', '', $murl );
$mrelative = preg_replace( '/^\/\//', '', $mrelative );
$mrelative = explode( '/', $mrelative );
array_shift($mrelative);
$mrelative = '/'.implode('/', $mrelative);

$mpath = ABSPATH . mb_substr($mdir, 1);

上面的代码是从本地服务器读取文件夹,而不是我想要自定义的url,我在哪里输入自定义的url?

【问题讨论】:

    标签: php wordpress google-cloud-platform google-cloud-storage


    【解决方案1】:

    您可以与 Google API 交互并获取 GCS 存储桶中的对象列表。

    可以在这里找到类似的答案:Get list of Files in Google Cloud Storage (Appengine PHP)

    【讨论】:

    • 但该代码不采用文件夹名称作为参数并扫描其中的文件。
    • 对象存储中没有文件夹。
    • 你可以提供完整的 gs:// 路径,你想列出并且应该可以工作
    • 如果你能展示一个示例代码就太好了。
    【解决方案2】:

    Google Cloud Storage 没有文件夹结构。 How Subdirectories Work 适合阅读一些背景知识。

    实际上在 Google 提供的Wordpress site 中列出了一个插件,另外一个在社区中广泛传播的插件称为WP-Stateless

    如果您想使用官方的Storage API,您也可以实现自定义解决方案,但我相信这些插件目前对您来说已经足够了。

    您可以使用此示例代码列出 GCS 存储桶中的对象:

    $storage = new Google_Service_Storage($this->gcsClient);
    $listObjects = $storage->objects->listObjects($this->bucket, array());
    $items = $listObjects->getItems();
    
    foreach ($items as $item) {
        print_r($item["name"]);
    }
    

    【讨论】:

    • 你能解释一下你的代码是做什么的吗?在您的代码中添加注释会很有帮助
    • 以上代码在短代码指定的文件夹中查找 mp3 文件。我希望 GCS 对象也能发生同样的情况。
    • 我用一个关于如何在 PHP 中列出存储桶中的文件的示例编辑了我的答案,这对你有帮助吗?
    • WP-Stateless 不允许我们使用简码来指定文件夹名称来列出媒体文件。您更新的这段代码意义重大。非常感谢,但是如何在bucket中指定文件夹名/目录名,我也可以通过替换“名称”来获取文件的元数据和文件的url吗?
    • 嗨 Chris32,在你提到 gcs 对象及其结构后,我了解到,现在假设,我需要从子目录中读取文件,例如:。 gs://example.com/music/abcdef/,如何从那里获取文件?是否允许动态给出目录。?比如 $foldername=array[i],然后是 gs://example.com/music/$foldername??
    猜你喜欢
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多