为什么我尝试使用Google Drive SDK插入CSV文件时出现错误400?

时间:2014-07-23 11:44:35

标签: php csv google-drive-api google-sheets mime-types

我有一些旧代码将csv文件插入Google云端硬盘帐户,默认情况下由Google Spreadsheets打开。

几天前我开始收到此错误消息:

  

Google连接存在一些问题。请再试一次。   (调用POST时出错   https://www.googleapis.com/upload/drive/v2/files?convert=false&uploadType=multipart&key=XXXXXXXXXXXXXXX:   (400)提供的mime类型无效)

以下是一些代码:

public function createDriveFile($tmpFilePath,$title,$fileMimetype = '',$description = '',$googleDocmimeType = ''){
      $file = new Google_DriveFile();
      $file->setTitle($title);
      $file->setDescription($description);

      $data = file_get_contents($tmpFilePath);
      $optParams = array('data' => $data);

      if($fileMimetype != '' ) {
        if($fileMimetype === 'text/csv' ) {
          $optParams['convert'] = false;
          $optParams['mimeType'] = 'application/vnd.google-apps.spreadsheet';
        } else {
          $optParams['convert'] = true;
        }
        $file->setMimeType( $fileMimetype );
      }
      if ($googleDocmimeType != ''){
        $optParams['mimeType'] = $googleDocmimeType;
      }

      $createdFile = $this->_driveService->files->insert($file, $optParams);

      return $createdFile;
    }

我很确定它正在发送'application/vnd.google-apps.spreadsheet'作为mimetype。

这是对该函数的调用:

$createFileInfo = $googleOauth->createDriveFile('/tmp/file.csv', 'file.csv','text/csv');

我做了一些测试,将'convert'参数的值更改为true,但没有效果。

1 个答案:

答案 0 :(得分:3)

您应该使用mimeType text/csv发送它。 Google表格仍然可以打开它,因此无需将其误传为真正的Google电子表格。