aja*_*jay 7 iphone objective-c ipad ios google-drive-api
我在我的应用程序中使用GoogleDrive API从我的应用程序上传文件.到目前为止,我成功地找到了上传所有类型文件的良好结果.
我按照Google示例上传文件.
我试图在上传时显示进度,具体取决于文件大小.我在google给出的示例代码中经历了很多课程,但结果并不多.
获取文件上载进度的步骤如下:
我在GTLServices.m中找到了以下方法
- (void)setUploadProgressBlock:(GTLServiceUploadProgressBlock)block {
[uploadProgressBlock_ autorelease];
uploadProgressBlock_ = [block copy];
if (uploadProgressBlock_) {
// As above, we need the fetcher to call us back when bytes are sent.
SEL sentDataSel = @selector(objectFetcher:didSendBytes:totalBytesSent:totalBytesExpectedToSend:);
[[self objectFetcher] setSentDataSelector:sentDataSel];
}
}
Run Code Online (Sandbox Code Playgroud)
之后在MyViewController.m中写成这样的
[self.driveService setUploadProgressBlock:^(GTLServiceTicket *ticket, unsigned long long numberOfBytesRead, unsigned long long dataLength) {
NSLog(@"uploading");
}];
Run Code Online (Sandbox Code Playgroud)
以上NSLog永远不会因为这个而无法获得上传的数据字节.通过调试我遇到的uploadProgressBlock_总是显示为nil.可能是这个resone我的块处理程序没有被执行.
如果我有任何错误,请建议我.如果任何人有想法将数据的字节上传到谷歌驱动器的文件请建议我.您的建议对我的工作更有用.
提前致谢.
采取我们的人建议的综合答案:
以下是获取上传进度信息的代码
GTLServiceTicket *uploadTicket= [self.driveService executeQuery:query completionHandler:^(GTLServiceTicket *ticket,GTLDriveFile *updatedFile,NSError *error)
{
if (error == nil)
{
[self.delegate completedFileUploadingToGoogleDrive];
NSError *fileDeletionError=nil;
[[NSFileManager defaultManager] removeItemAtPath:absalutePath error:&fileDeletionError];
} else
{
[self.delegate errorOccoredWhileUploadingToGoogleDrive:error];
}
}];
[uploadTicket setUploadProgressBlock:^(GTLServiceTicket *ticket, unsigned long long totalBytesWritten, unsigned long long totalBytesExpectedToWrite) {
[self.delegate uploadedFileInfoInKB:(float)totalBytesExpectedToWrite/1024 and:(float)totalBytesWritten/1024];
}];
Run Code Online (Sandbox Code Playgroud)
快乐编码!!
小智 8
我已成功使用上传块回调...将其分配给GTLServiceTicket您从该executeQuery方法获得的对象.
样品:
GTLServiceTicket *uploadTicket = [self.driveService executeQuery:query completionHandler:^(GTLServiceTicket *ticket, GTLDriveFile *insertedFile, NSError *error)
{ // completion
}];
[uploadTicket setUploadProgressBlock:^(GTLServiceTicket *ticket, unsigned long long totalBytesWritten, unsigned long long totalBytesExpectedToWrite)
{
// progress
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1518 次 |
| 最近记录: |