使用php从google drive api下载文件到我的服务器

时间:2014-07-09 06:54:14

标签: php curl google-drive-api google-picker

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下载文件到我的服务器?

0 个答案:

没有答案