【发布时间】:2012-12-13 04:31:35
【问题描述】:
您好 Google Drive API 支持人员,
过去几天,我们在使用 Google 云端硬盘时遇到了严重问题。
我们无法再更新包含图像的 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 导入有效。
请尽快解决问题。
感谢您的支持。
【问题讨论】:
标签: objective-c google-drive-api