您好 Google Drive API 支持人员,
在过去的几天里,我们遇到了 Google Drive 的严重问题。
我们无法再使用图像更新 Docs 文档。当我们的 iPhone 应用程序发送更新带有图像的 Docs 文档的请求时,服务器返回 OK,但其中的图像永远不会被上传。
重现问题的代码在这里。
- (void)selfOverwriteSelectedFile:(GTLDriveFile *)gtlDriveFile
{
// -- not working type -- can't upload images on ODT, HTML, RTF, PDF
NSString *mimetype = @"application/vnd.oasis.opendocument.text"; //@"text/html" @"application/rtf" @"application/pdf"
//works: DOCX
//NSString *mimetype = @"application/vnd.openxmlformats-officedocument.wordprocessingml.document";
NSString *downloadUrl = [gtlDriveFile.exportLinks additionalPropertyForName:mimetype];
//1st request: download the file
GTMHTTPFetcher *fetcher = [self.driveService.fetcherService fetcherWithURLString:downloadUrl];
[fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) {
//2nd request: re-upload the same file
gtlDriveFile.mimeType = mimetype;
GTLUploadParameters *uploadParameters = [GTLUploadParameters uploadParametersWithData:data MIMEType:mimetype];
GTLQueryDrive *query = [GTLQueryDrive queryForFilesUpdateWithObject:gtlDriveFile fileId:gtlDriveFile.identifier uploadParameters:uploadParameters];
query.convert = query.newRevision = query.setModifiedDate = YES;
[self.driveService executeQuery:query completionHandler:^(GTLServiceTicket *ticket, GTLDriveFile *newGtlFile, NSError *error2nd) {
}];
}];
}
//replace the method for easy-test
-(void)duplicateSelectedFile
{
GTLDriveFile *selectedFile = [self selectedFileListEntry];
[self selfOverwriteSelectedFile:selectedFile];
}
为了最简单的复制,
- 下载最新的“Objective-C 的 Google APIs 客户端库”。
- 在 XCode 中打开 DriveSample 项目。
- 用代码替换“- (void)duplicateSelectedFile”方法。
- 编译并执行修改后的示例应用程序“获取文件列表”,选择带有图像的 docs 文件,然后点击“复制”。
- 应使用相同的内容覆盖所选文件。但是,里面的图像都丢失了(在无休止的等待上传状态)。
仅供参考,odt/html/rtf/pdf 导入不起作用。但是, docx 导入有效。
请尽快解决问题。
谢谢您的支持。