【问题标题】:Google Drive Api PHP multipart upload empty contentGoogle Drive Api PHP 分段上传空内容
【发布时间】:2020-10-04 05:10:45
【问题描述】:

我的问题如下。 使用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】:

    我相信你的目标如下。

    • 您想使用 Drive API 将带有 multipart/form-data 的文件上传到 Google Drive 中的特定文件夹。
    • 您希望使用 googleapis for PHP 来实现此目的。
    • 在您的脚本中,$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。请注意这一点。

    参考资料:

    【讨论】:

    • 谢谢。我会试试这个并报告结果!
    猜你喜欢
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 2012-05-08
    • 1970-01-01
    • 2020-03-07
    相关资源
    最近更新 更多