我正在使用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());
}
答案 0 :(得分:1)
自从我的帖子没有得到答复以来已经过了一周。我将发布并分享自上周以来我所做的任何事情。
我目前正在使用Laravel 5.4。
所以我在我的应用程序中安装了laravel-google-cloud-storage和flysystem-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
]);
}