我似乎无法使用以下代码更新google驱动器中的文件,一切正常但文件保持不变?我正在使用v3 api。
function updateFile($service, $fileId, $data) {
try {
$emptyFile = new Google_Service_Drive_DriveFile();
$file = $service->files->get($fileId);
$service->files->update($fileId, $emptyFile, array(
'data' => $data,
'mimeType' => 'text/csv',
'uploadType' => 'multipart'
));
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
}
}
答案 0 :(得分:15)
我设法做到了,你必须将空文件作为第二个参数,不知道为什么,但这篇文章对我有很大帮助:Google Drive API v3 Migration
这是最终解决方案:
function updateFile($service, $fileId, $data) {
try {
$emptyFile = new Google_Service_Drive_DriveFile();
$service->files->update($fileId, $emptyFile, array(
'data' => $data,
'mimeType' => 'text/csv',
'uploadType' => 'multipart'
));
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
}
}
其中$ fileId是您要更新的文件,数据是您正在更新文件的新内容。
不要忘记在此之后刷新谷歌驱动器,因为它的预览没有改变,我丢失了一个小时:/。希望这会有所帮助。
答案 1 :(得分:0)
function updateFile($fileId,$newDescription){
try {
// First retrieve the file from the API.
$emptyFile = new Google_Service_Drive_DriveFile();
// File's new metadata.
$emptyFile->setDescription($newDescription);
// Send the request to the API.
$driveService->files->update($fileId, $emptyFile, array());
print 'success';
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
}
}//end update
如果您希望像人员描述这样的人员更新,该方法必不可少。我从v2复制了这个想法。
// File's new metadata.
$file->setTitle($newTitle);
$file->setDescription($newDescription);
$file->setMimeType($newMimeType);
注意:另外,您还必须确保update function的3个参数是一个数组 也如其他有用答案中所述;确保刷新Google驱动器以进行检查