我在 iOS 中找到了一种方法(对我来说并不明显),使用标准 queryForFilesInsertWithObject 和 uploadParameters 将文件插入到谷歌驱动器文件夹中,并在 GTLDriveParentReference 对象中设置文件夹 id,将该对象添加到数组中,并将该数组分配给上传文件的“父母”属性。我还没有想出的是如何用新版本覆盖任何现有的谷歌驱动器文件而不创建副本。我还想用与我的本地设备文件相同的日期时间戳来标记新上传的谷歌驱动器文件。当我尝试使用文件/更新方法并设置 file.modifiedDate 和 query.setModifiedDate=YES 时,我总是收到 400 Bad Request。
我可以使用patch来更改标题就好了,但是我不能使用api设置modifiedDate。我能够使用 Google 的 Try it 更改 modifiedDate!APIs Explorer,所以谷歌的服务器工作正常。这是失败的代码:
GTLDriveFile *file = [GTLDriveFile object];
NSString *fId = insertedFile.identifier;
file.title = @"Tony.jpg";
file.modifiedDate = myNewGoogleDate; // "2012-12-31T08:00:00+00:00"
GTLQueryDrive *qu = [GTLQueryDrive queryForFilesPatchWithObject:file fileId:fId];
qu.setModifiedDate = YES;
[service executeQuery:qu completionHandler:^(GTLServiceTicket *ticket,...
用 modifiedDate 取出两行,google-drive 文件标题更改得很好。我追踪了对executeQuery的api调用,发现以下结果为“DataToPost”。
{"method":"drive.files.patch","id":"gtl_7","jsonrpc":"2.0",
"params": {"setModifiedDate":true,"resource":
{"modifiedDate":"2012-12-31T08:00:00+00:00",
"title":"Tony.jpg"},"fileId":"0BxRlXPR_hfR9OEJSdDdyQjkyaE0"},"apiVersion":"v2"}
有人在这篇文章中看到“错误请求”吗?从 executeQuery 返回的错误是:
Error Domain=com.google.GTLJSONRPCErrorDomain Code=400 "The operation couldn’t be
completed. (Bad Request)" UserInfo=0x80724b0 {error=Bad Request,
GTLStructuredError=GTLErrorObject 0x806a7a0: {message:"Bad Request" code:400 data:[1]},
NSLocalizedFailureReason=(Bad Request)}
有没有人有一些代码来设置修改日期有效?