动态创建文件夹和子文件夹
Dynamically Create Folders and Subfolders
我在 php 中有几个脚本可以创建文件夹并将文件上传到所需的文件夹,但我似乎无法创建新文件夹、新子文件夹或创建其他功能这个流程。我必须使用 parent/children 特定程序吗?这是我用来创建文件夹的功能代码:
function getFolderExistsCreate($service, $folderName, $folderDesc) {
// Lista el root de drive
$files = $service->files->listFiles();
$found = false;
// Checa los folders en ciclo
foreach ($files['items'] as $item) {
if ($item['title'] == $folderName) {
$found = true;
return $item['id'];
break;
}
}
// Lo crea si no lo encontro
if ($found == false) {
$folder = new Google_Service_Drive_DriveFile();
//Poner los settings del folder
$folder->setTitle($folderName);
if(!empty($folderDesc))
$folder->setDescription($folderDesc);
$folder->setMimeType('application/vnd.google-apps.folder');
//Try de crear el folder
try {
$createdFile = $service->files->insert($folder, array(
'mimeType' => 'application/vnd.google-apps.folder',
));
// Regresa el nuevo id del folder
return $createdFile->id;
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
}
}
}
请帮忙,谢谢!
要为特定文件夹创建子文件夹,您应该在文件的 parents
属性 中指定正确的 ID。
"parents": [{"id":"0ADK06pfg"}]
查看此 page 了解更多信息
希望对您有所帮助!
您需要设置要放置的文件夹的父ID。
代码来自 files.insert
// Set the parent folder.
if ($parentId != null) {
$parent = new Google_Service_Drive_ParentReference();
$parent->setId($parentId);
$file->setParents(array($parent));
}
获取文件夹 ID 的最简单方法是 files.list 使用 q 搜索选项仅搜索文件夹 mimeType = 'application/vnd.google-apps.folder'
然后您可以找到要放置新文件夹的文件夹或归档到。
似乎 class Google_Service_Drive_ParentReference() 不再起作用了。使用这个:
$fileMetadata = new Google_Service_Drive_DriveFile(array(
//Set the Random Filename
'name' => $rdmName,
//Set the Parent Folder
'parents' => array('0BzaRxkCDivjIM1pUYU1SLWVxOGM')
));
try{
$newFile = $drive_service->files->create(
$fileMetadata,
array(
'data' => file_get_contents(TESTFILE),
'mimeType' => 'application/pdf',
'uploadType' => 'media'
)
);
} catch(Exception $e){
echo 'An error ocurred : ' . $e->getMessage();
}
我在 php 中有几个脚本可以创建文件夹并将文件上传到所需的文件夹,但我似乎无法创建新文件夹、新子文件夹或创建其他功能这个流程。我必须使用 parent/children 特定程序吗?这是我用来创建文件夹的功能代码:
function getFolderExistsCreate($service, $folderName, $folderDesc) {
// Lista el root de drive
$files = $service->files->listFiles();
$found = false;
// Checa los folders en ciclo
foreach ($files['items'] as $item) {
if ($item['title'] == $folderName) {
$found = true;
return $item['id'];
break;
}
}
// Lo crea si no lo encontro
if ($found == false) {
$folder = new Google_Service_Drive_DriveFile();
//Poner los settings del folder
$folder->setTitle($folderName);
if(!empty($folderDesc))
$folder->setDescription($folderDesc);
$folder->setMimeType('application/vnd.google-apps.folder');
//Try de crear el folder
try {
$createdFile = $service->files->insert($folder, array(
'mimeType' => 'application/vnd.google-apps.folder',
));
// Regresa el nuevo id del folder
return $createdFile->id;
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
}
}
}
请帮忙,谢谢!
要为特定文件夹创建子文件夹,您应该在文件的 parents
属性 中指定正确的 ID。
"parents": [{"id":"0ADK06pfg"}]
查看此 page 了解更多信息
希望对您有所帮助!
您需要设置要放置的文件夹的父ID。
代码来自 files.insert
// Set the parent folder.
if ($parentId != null) {
$parent = new Google_Service_Drive_ParentReference();
$parent->setId($parentId);
$file->setParents(array($parent));
}
获取文件夹 ID 的最简单方法是 files.list 使用 q 搜索选项仅搜索文件夹 mimeType = 'application/vnd.google-apps.folder'
然后您可以找到要放置新文件夹的文件夹或归档到。
似乎 class Google_Service_Drive_ParentReference() 不再起作用了。使用这个:
$fileMetadata = new Google_Service_Drive_DriveFile(array(
//Set the Random Filename
'name' => $rdmName,
//Set the Parent Folder
'parents' => array('0BzaRxkCDivjIM1pUYU1SLWVxOGM')
));
try{
$newFile = $drive_service->files->create(
$fileMetadata,
array(
'data' => file_get_contents(TESTFILE),
'mimeType' => 'application/pdf',
'uploadType' => 'media'
)
);
} catch(Exception $e){
echo 'An error ocurred : ' . $e->getMessage();
}