Google Drive Api PHP分段上传空内容

问题描述 投票:0回答:1

我的问题如下。使用Google Drive API V3和php将文件上传到Google Drive时,上传的文件为空,文件大小为0字节。所有元数据上传都没有问题。

session_start();
$file_tmp=$_SESSION['file_tmp'];
$drive = new Google_Service_Drive($client);

$data = file_get_contents($file_tmp);
    $file = new Google_Service_Drive_DriveFile(array(
      'data' => $data,
      'mimeType' => $file_type,
      'name' => $file_name,
      'description'=>$lolol,
      'uploadType' => 'multipart',
      'parents' => array($folderID),
      'uploadType' => 'multipart'
  ));
      $createdFile = $drive->files->create($file);

对于任何想知道的人,如果我回显$ file_tmp,我都会得到诸如/ private / var / tmp / phpDpmi83之类的路径。(我是从带有输入类型文件的html表单中获得的)

最初我没有UploadType,其他论坛都说这是问题所在,但我没有添加任何内容。有什么建议么?

php file-upload google-drive-api
1个回答
0
投票

我相信您的目标如下。

  • 您想使用Drive API将multipart/form-data的文件上传到Google Drive中的特定文件夹。
  • 您想使用适用于PHP的googleapis实现此目的。
  • 在您的脚本中,$drive可用于上传文件。

为此,这个答案如何?

修改点:

  • 在您的脚本中,请分隔元数据和文件内容。这样,我认为您的脚本有效。

当上述要点反映到脚本中时,它如下所示。

修改的脚本:

session_start();
$file_tmp=$_SESSION['file_tmp'];
$drive = new Google_Service_Drive($client);

$data = file_get_contents($file_tmp);

// I modified below script.
$file = new Google_Service_Drive_DriveFile(array(
    'mimeType' => $file_type,
    'name' => $file_name,
    'description'=>$lolol,
    'parents' => array($folderID),
));
$file_content = array(
    'data' => $data,
    'uploadType' => 'multipart'
);
$createdFile = $drive->files->create($file, $file_content);

注意:

  • 在此修改中,假设$data是文件内容。如果无法使用$file_tmp,请使用示例文件进行测试。
  • 在这种情况下,最大文件大小为5 MB。请注意这一点。

参考:

© www.soinside.com 2019 - 2024. All rights reserved.