繁体   English   中英

在 Google Cloud Storage 中创建“文件夹”对象

[英]creating a “folder” object in Google Cloud Storage

这里有一些有趣的事情。 我们的系统为我们的用户提供了一个文件管理器。 这些文件存储在 Google Cloud Storage 的存储桶中。 我需要做的是在存储桶中创建一个“文件夹”。 是的,我知道 GCS 是一个平面空间,文件夹并不是真正的东西……但是我可以转到 Google Cloud Platform 浏览器并单击一个名为“创建文件夹”的按钮,它会创建一些看起来很简单的东西就像一个文件夹。 它不应该有任何内容。 我正在尝试使用 cURL 来编写存储对象的内容,以便“保存”它:

$bucket = $google_client( $bucket_name );
$folder = $bucket->object( $folder_name );

$url = $folder->beginSignedUploadSession();

// now we have to make an HTTP "PUT"
//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_PUT, 1);
curl_setopt($ch,CURLOPT_INFILE, "");   <--- this is wrong
curl_setopt($ch,CURLOPT_INFILESIZE, 0);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);

或者我应该只创建虚拟“文件”来附加到我正在创建的带有虚拟值的 URL 吗?

我想我应该补充一点,我正在使用一个使用旧版本的 GCS API 执行此操作的现有系统,使用如下代码:

$postbody = [ 'data' => $data ,
              'uploadType' => "multipart", 
              'mimeType' => 'text/plain'];
$gso = new Google_Service_Storage_StorageObject();
$gso->setName( $foldername );
$resp = $objects->insert( $bucket, $gso, $postbody );

好的,我现在有了答案。 您可以使用存储桶->上传功能。 您需要将 NULL 指定为数据值,并使用选项指定完整路径。 确保文件夹名称以斜杠(“/”)结尾,否则您将得到一个空文件对象。

$folder_name = "level1/level2/folder/";
$options = [ 'name' => $folder_name ];
$upload_result = $bucket->upload( NULL, $options );

注意:如果 level1 和 level2 不存在,它们也将被创建为文件夹,为您提供隐式层次结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM