如何使用Objective C从Google云端硬盘下载公共共享文件(不使用Drive API)

时间:2017-12-15 09:06:21

标签: ios download google-drive-api asihttprequest

我目前在Google云端硬盘上上传了一些文件,然后为这些文件创建了共享链接。这些共享链接具有表单

https://drive.google.com/uc?export=download&confirm=wAFv&id=[may_be_file_id]

我创建了一个可以下载这些文件的应用。我使用ASIHTTPRequest开源库来下载这些文件

ASIHTTPRequest* req = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:<downloadURL>]];
req.shouldContinueWhenAppEntersBackground = YES;
req.timeOutSeconds = 60;
req.delegate = self;
req.tag = filename;

[req setDownloadDestinationPath:<a_video_path_on_Document_directory>];


ASINetworkQueue* networkQueue = [[ASINetworkQueue alloc] init];

[networkQueue addOperation:req];
[networkQueue setRequestDidFinishSelector:@selector(finishCallback:)];
[networkQueue setRequestDidFailSelector:@selector(failCallback:)];
[networkQueue setDelegate:self];

[networkQueue go];

论点&#39; downloadURL&#39;是我上面提到的每个人的共享网址。但是在“去”之后在networkQueue调用的方法中,尽管文件大小约为2Gb,但会立即调用finishCallback。我尝试使用另一个下载程序第三方开源但得到相同的结果。

网址或Google云端硬盘上的问题是否有阻止下载的问题,但是当我在Macbook上将这些网址粘贴到Safari上时,它会下载文件。

这里有什么问题?

我只是使用Google Drive API下载文件。

GTLRDriveService* service = [[GTLRDriveService alloc] init];
        GTMSessionFetcher *fetcher = [service.fetcherService fetcherWithURLString:downloadURL]; //GTLServiceDrive *service;

        [fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) {
            if (error == nil) {
                NSLog(@"Retrieved file content");
                // File Downloaded!
            } else {
                NSLog(@"An error occurred: %@", error);
            }
        }];

它会立即进入完成程序段并打印“检索到的文件内容”。

怎么可能?

0 个答案:

没有答案