Google Drive Api PHP 分段上传空内容
Posted
技术标签:
【中文标题】Google Drive Api PHP 分段上传空内容【英文标题】:Google Drive Api PHP multipart upload empty content 【发布时间】: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 并且其他论坛说这是问题,但我添加了它,但仍然没有。 有什么建议?
【问题讨论】:
【参考方案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。请注意这一点。
参考资料:
Upload file data googleapis for PHP【讨论】:
谢谢。我会试试这个并报告结果!以上是关于Google Drive Api PHP 分段上传空内容的主要内容,如果未能解决你的问题,请参考以下文章
google drive simple upload rest API的示例
使用PHP无需用户交互即可连接到Google Drive API
使用 Java 和 Google Drive API V3 将文件上传到共享的 Google Drive 位置?