1 回答
TA贡献1770条经验 获得超3个赞
使用 Google Drive API 上传到 Google Drive - 不带 composer
将该功能与网站集成所需的条件:
安装 google-api-php-client
安装 Google_DriveService 客户端
无论您如何将文件上传到 Google 云端硬盘 - 您都需要某种凭据来表明您有权访问相关云端硬盘(也就是说,您需要以自己的身份进行身份验证)。为此:
如果尚未完成,请(免费)设置 Google Cloud 控制台。
创建项目。
启用 Drive API。
设置同意屏幕。
转到 和
APIs & Services -> Credentials
+Create Credentials
有几种可能性,就您而言,创建一个并选择是有意义的
OAuth client ID
Application type: Web Application
使用格式指定网站的 URL,格式为 和
Authorized JavaScript origins
Authorized redirect URIs
创建客户端后 - 记下和
client ID
client secret
现在,您可以将 Google 的示例放在一起,以便使用 OAuth2 客户端进行身份验证,创建 Google Drive 服务对象并上传到 Google Drive,然后将其合并到 PHP 文件上传中。
将这些代码片段修补在一起可能如下所示:
表单.html
<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>
上传.php
<?php
require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_DriveService.php';
//create a Google OAuth client
$client = new Google_Client();
$client->setClientId('YOUR CLIENT ID');
$client->setClientSecret('YOUR CLIENT SECRET');
$redirect = filter_var('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'],
FILTER_SANITIZE_URL);
$client->setRedirectUri($redirect);
$client->setScopes(array('https://www.googleapis.com/auth/drive'));
if(empty($_GET['code']))
{
$client->authenticate();
}
if(!empty($_FILES["fileToUpload"]["name"]))
{
$target_file=$_FILES["fileToUpload"]["name"];
// Create the Drive service object
$accessToken = $client->authenticate($_GET['code']);
$client->setAccessToken($accessToken);
$service = new Google_DriveService($client);
// Create the file on your Google Drive
$fileMetadata = new Google_Service_Drive_DriveFile(array(
'name' => 'My file'));
$content = file_get_contents($target_file);
$mimeType=mime_content_type($target_file);
$file = $driveService->files->create($fileMetadata, array(
'data' => $content,
'mimeType' => $mimeType,
'fields' => 'id'));
printf("File ID: %s\n", $file->id);
}
?>
- 1 回答
- 0 关注
- 150 浏览
添加回答
举报