使用v3 api下载google驱动器文件

时间:2018-03-30 07:06:27

标签: php google-api google-drive-api google-api-php-client

对于downloading文件, Google drive api 似乎令人困惑。我已经能够列出所有文件,甚至下载了一些文件,但在下载 Google文档时卡住了。

为什么他们没有真正的下载文件的方法,而是采用两种不同的方法:获取导出。如果我不需要对文件进行任何转换,为什么我需要为导出指定 Mime类型?此外,在列出文件时,所有文件的 Mime类型始终为null。 e.g

@foreach ($files->getFiles() as $file)
    {{  $file->getMimeType() }} // empty string / null
@endforeach

Reference to getMimeType

这是我到目前为止所做的事情

public function listFiles(Request $request)
  client = $this->getClient();
  $service = new Google_Service_Drive($client);
  $optParams = array(
    'q' => 'fullText contains \'"abc"\'',
    'pageSize' => 10,
    'fields' => 'nextPageToken, files(id, name)'
  );
  $files = $service->files->listFiles($optParams);
}
public function downloadFile($file_id)
{
    $client = $this->getClient();
    $service = new Google_Service_Drive($client);
    $file = null;
    $file = $service->files->export($file_id, 'application/pdf', array(
            'alt' => 'media'
    )); // I really need to get rid of Mimetype(application/pdf), It should download the exact same file
}

更新

我设法通过在列表中提供字段来解决mime type问题。

$optParams = array(
        'q' => 'fullText contains \'"basheer"\'',
        'pageSize' => 10,
        'fields' => 'nextPageToken, files(id, name, mimeType)' //<--
    );

但是现在当我尝试下载加载文件时,它会抛出以下错误

  

不支持请求的转换。 &#34;域&#34;:&#34;全球&#34;,&#34;原因&#34;:&#34; badRequest&#34;,

// request('mimeType') = application/vnd.google-apps.spreadsheet
$file = $service->files->export($file_id, request('mimeType'), array(
            'alt' => 'media'
        ));

您的回答和评论将不胜感激。

由于

0 个答案:

没有答案