1 - 我已配置谷歌选择器,它工作正常,我从选择器中选择文件并获取文件ID。
2 - 刷新令牌等所有进程后,我获取文件元数据并获取文件导出链接
$downloadExpLink = $file->getExportLinks();
$downloadUrl = $downloadExpLink['application/vnd.openxmlformats-officedocument.wordprocessingml.document'];
3 - 之后我用这个
if ($downloadUrl) {
$request = new Google_HttpRequest($downloadUrl, 'GET', null, null);
$httpRequest = Google_Client::$io->authenticatedRequest($request);
if ($httpRequest->getResponseHttpCode() == 200)
{
$content = $httpRequest->getResponseBody();
print_r($content);
} else {
// An error occurred.
return null;
}
并得到此回复
[responseBody:protected] => PK��DdocProps/app.xml���
�0D���k�I[ѫ��m
��!����A={���}�
2G�Z�g�V��Bľ֧�n�Ҋ�ap!����fb�d����k}Ikc�_`t<+�(�NJ̽�����#��EU-
�0@���P����........
4 - 我使用一些cURL函数从google驱动器获取文件并将其保存到服务器。在服务器目录中创建但已裁剪的文件。我用这个代码
$downloadExpLink = $file->getExportLinks();
$downloadUrl = $downloadExpLink['application/vnd.openxmlformats-officedocument.wordprocessingml.document'];
//$downloadUrl value is
/*https://docs.google.com/feeds/download/documents/export/Export?id=1CEt1ya5kKLtgK************IJjDEY5BdfaGI&exportFormat=docx*/
当我将这个网址放入浏览器时,它会成功下载文件但是当我使用这个网址来获取带有cURL或任何php代码的文件并尝试将其保存在服务器上时,它会保存损坏的文件。
$ch = curl_init();
$source = $downloadUrl;
curl_setopt($ch, CURLOPT_URL, $source);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec ($ch);
curl_close ($ch);
$destination = "test/afile5.docx";
$file = fopen($destination, "w+");
fputs($file, $data);
fclose($file);
它会导致存储在服务器上的文件损坏,但是当我使用此代码获取除google驱动器之外的任何文件时,我会在服务器上成功下载该文件。
任何人都可以帮助你如何使用php从$ downloadUrl下载文件到我的服务器?