嘿伙计们,我是谷歌云存储的新手..
我想使用php编码在存储桶中创建文件夹。我搜索了很少的网站,1我看到它写了:
“在存储桶中创建文件夹将创建一个以目录命名的占位符对象,没有数据内容和mimetype application / x-directory。不支持在Google Storage Manager中创建的目录占位符对象。”
我无法理解它想说的是什么。我如何创建文件夹请帮助我。我尝试使用以下代码:
$req = new Google_HttpRequest("http://commondatastorage.googleapis.com/bucket/myfoldertrial");
$req->setRequestHeaders(array(
'x-goog-project-id' => 21212,
'x-goog-acl' => 'public-read',
'Content-Type' => 'application/x-directory'
));
$req->setRequestMethod('PUT');
$req->setPostBody('myfoldertrial');
我正在使用以下链接中的API:
请帮我用PHP创建文件夹。
答案 0 :(得分:11)
您可能实际上不需要创建文件夹。
Google Storage不是像您的操作系统文件系统所使用的树结构,所有对象都存储在顶层的存储桶中。但是你可以给一个带有斜杠的名字,所以它看起来就像是在一个文件夹中 - Users/username/docs/2012/09/21/activity.csv
是一个非常好的Object名称,不需要任何支持文件夹。
一旦你有了这种方案的对象,你就可以列出它们,好像你正在查看delimiter
和prefix
参数的文件夹的内容{{3 }}
因此,如果您只想创建myfoldertrial
以便将example.png
上传到其中,则无需创建该文件夹,您只需直接上传到myfoldertrial/example.png
。
答案 1 :(得分:2)
有时,在CMS中,您需要先创建一个目录才能将文件上传到其中,因此单击鼠标可以触发事件以将路径作为基本文件夹,然后进行批量上载。
他们说,这是一个文件浏览器。
以下代码可能有所帮助。
<?php
$privateKeyFile = '{{full/path/to/*.p12}}';
$newDirectory = '{{path/of/new/directory/}}'; // remember to end it with a slash.
/**
* Authentication
*/
$client = new Google_Client();
$client->setApplicationName('Create a new folder');
$client->setClientId($clientId);
$scopes = array('https://www.googleapis.com/auth/devstorage.full_control');
$client->setScopes($scopes);
$service = new Google_Service_Storage($client);
if (isset($_SESSION['service_token'])) {
$client->setAccessToken($_SESSION['service_token']);
}
if (!file_exists($privateKeyFile)) {
die('missing the location of primary key file, given: ' . $privateKeyFile);
}
$key = file_get_contents($privateKeyFile);
$cred = new Google_Auth_AssertionCredentials(
$clientEmailAddress
, $scopes
, $key
);
$client->setAssertionCredentials($cred);
if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();
/**
* Creating Folder
*/
try {
/* create empty file that acts as folder */
$postBody = new Google_Service_Storage_StorageObject();
$postBody->setName($newDirectory);
$postBody->setSize(0);
$created = $service->objects->insert($bucketName, $postBody, array(
'name' => $newDirectory,
'uploadType' => 'media',
'projection' => 'full',
'data' => '',
));
} catch (Exception $ex) {
echo $ex->getMessage() . "\n<pre>";
print_r($ex->getTraceAsString());
echo '</pre>';
die();
}
echo 'EOF';
答案 2 :(得分:0)
您可以在上传时通过在文件路径中提供文件夹来创建文件夹, 即您的网址应为https://storage.googleapis.com/ //?GoogleAccessId = id@developer.gserviceaccount.com& Expires = 1410875751&amp; Signature = SIGNATURE