[英]Uploading file to specific folder using google drive api with PHP
我正在使用谷歌驅動器api上傳文件,這是我的代碼到目前為止,文件上傳到我的根目錄,我想更改到另一個文件夾的路徑,
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_DriveService.php';
$client = new Google_Client();
// Get your credentials from the APIs Console
$client->setClientId('***');
$client->setClientSecret('***');
$client->setRedirectUri('http://***');
$client->setScopes(array('https://www.googleapis.com/auth/drive'));
if(empty($_GET['code']))
{
$client->authenticate();
}
$myfile= "video.mp4";
$type='video/mp4';
$service = new Google_DriveService($client);
// Exchange authorization code for access token
$accessToken = $client->authenticate($_GET['code']);
$client->setAccessToken($accessToken);
//Insert a file
$file = new Google_DriveFile();
$file->setTitle('filename.mp4');
$file->setDescription('A video');
$file->setMimeType($type);
$data = file_get_contents($myfile);
$createdFile = $service->files->insert($file, array(
'data' => $data,
'mimeType' => $type,
));
print_r($createdFile);
echo "<br />";
我嘗試了stackoverflow的一些帖子,但沒有一個對我有用我有錯誤,在此先感謝
似乎Google_Service_Drive_ParentReference()
類不再起作用了。 但是,以下代碼適用於我:
$fileMetadata = new Google_Service_Drive_DriveFile(array(
//Set the Random Filename
'name' => $rdmName,
//Set the Parent Folder
'parents' => array('0BzaRxkCDivjIM1pUYU1SLWVxOGM') // this is the folder id
));
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();
}
像這樣設置父文件夾:
//Set the Parent Folder
$parent = new Google_Service_Drive_ParentReference(); //previously Google_ParentReference
$parent->setId('0B9mYBlahBlahBlah');
$file->setParents(array($parent));
設置父ID列表應該有效。 我們的公共文檔包含每種API方法的工作片段。 請先查看一下: https : //developers.google.com/drive/v2/reference/files/insert
$file->setParents([{'id': parent_id}])
使用以下代碼。 它非常適合在谷歌驅動器中插入文件。
<?php
require_once 'Google/autoload.php';
require_once 'Google/Client.php';
require_once 'Google/Service/Drive.php';
$client = new Google_Client();
// Get your credentials from the console
$client->setClientId('your client id');
$client->setClientSecret('your client secret');
$client->setRedirectUri('redirect uri set on google apps');
$client->setScopes(array('https://www.googleapis.com/auth/drive.file'));
session_start();
if (isset($_GET['code']) || (isset($_SESSION['access_token']) && $_SESSION['access_token'])) {
if (isset($_GET['code'])) {
$client->authenticate($_GET['code']);
$_SESSION['access_token'] = $client->getAccessToken();
}
else
$client->setAccessToken($_SESSION['access_token']);
$service = new Google_Service_Drive($client);
//Insert a file
$file = new Google_Service_Drive_DriveFile();
$file->setTitle(uniqid().'.jpg');
$file->setDescription('A test document');
$file->setMimeType('image/jpeg');
$data = file_get_contents('a.jpg');
$createdFile = $service->files->insert($file, array(
'data' => $data,
'mimeType' => 'image/jpeg',
'uploadType' => 'multipart'
));
print_r($createdFile);
}
else {
$authUrl = $client->createAuthUrl();
header('Location: ' . $authUrl);
exit();
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.