使用Laravel获取Google云端存储中的所有文件夹和图像

时间:2017-09-28 09:08:35

标签: php laravel google-cloud-storage

我正在使用laravel-google-cloud-storage来存储图片并逐个检索它们。我可以从Google云端存储中获取所有文件夹和图像吗?如果可能,我该如何完成?

我试图使用此flysystem-google-cloud-storage来检索它,但它们与我提供的第一个链接类似。

我想要实现的目标是使用Google云端存储选择包含所有文件夹和图像的图像,并将其放在我的表单中,而不是从我的本地选择图像。

更新

这是我迄今为止尝试过的documentation

    $storageClient = new StorageClient([
        'projectId' => 'project-id',
        'keyFilePath' => 'myKeyFile.json',
    ]);
    $bucket = $storageClient->bucket('my-bucket');
    $buckets = $storageClient->buckets();

然后尝试添加foreach,它返回空,我的Bucket中也有6个文件夹。

foreach ($buckets as $bucket) {
    dd($bucket->name());
}

1 个答案:

答案 0 :(得分:1)

自从我的帖子没有得到答复以来已经过了一周。我将发布并分享自上周以来我所做的任何事情。

我目前正在使用Laravel 5.4。

所以我在我的应用程序中安装了laravel-google-cloud-storageflysystem-google-cloud-storage

我创建了一个不同的控制器,因为我通过Ajax从Google云端存储中检索图像。

您需要做的就是获取可以位于Google云端存储控制台中的Google云端存储凭据>查找 API ,然后点击下面的链接,说明“转到API概述>凭据。只需下载JSON文件格式的凭据并将其放在您的根目录或任何您想要的位置(I仍然不知道我应该在哪里正确放置此文件。)接下来我们将获得您的Google云端存储项目ID ,它可以位于信息中心内。

然后,这是我的控制器中的设置,从我的Laravel应用程序连接到Google云端存储,我可以上传,检索,删除,复制文件。

use Google\Cloud\Storage\StorageClient;
use League\Flysystem\Filesystem;
use League\Flysystem\Plugin\GetWithMetadata;
use Superbalist\Flysystem\GoogleStorage\GoogleStorageAdapter;

class GoogleStorageController extends Controller
{

    // in my method
    $storageClient = new StorageClient([
        'projectId' => 'YOUR-PROJECT-ID',
        'keyFilePath' => '/path/of/your/keyfile.json',
    ]);

    // name of your bucket
    $bucket = $storageClient->bucket('your-bucket-name');
    $adapter = new GoogleStorageAdapter($storageClient, $bucket);
    $filesystem = new Filesystem($adapter);

    // this line here will retrieve all your folders and images
    $contents = $filesystem->listContents();

    // you can get the specific directory and the images inside 
    // by adding a parameter
    $contents = $filesystem->listContents('directory-name');

    return response()->json([
        'contents' => $contents
    ]);
}