iOS 10在下载之前获得文件大小

时间:2017-09-26 06:31:49

标签: ios objective-c xcode ios10 nsmutableurlrequest

我需要从url获取文件大小来决定我是否会下载它。我用NSMutableURLRequest尝试了但是在委托中,它总是返回-1。现在已弃用NSMutableURLRequest方法。我在NSURLConnectionDelegate中添加了所有代理(NSURLConnectionDownloadDelegateNSURLConnectionDataDelegate.h file),但它不起作用。我的代码是:

NSMutableURLRequest * req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://download.quranicaudio.com/quran/abdullaah_3awwaad_al-juhaynee/001.mp3"]];
[req setHTTPMethod:@"Head"];
NSURLConnection * con = [[NSURLConnection alloc] initWithRequest:req
                                                        delegate:self];
[con start];
[con release];


- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{

NSLog(@"didReceiveResponse (%lld) ", response.expectedContentLength);

}

已经尝试过:How to find size of a file before downloading it in iOS 7?

适用于iOS 10+的任何解决方案?

2 个答案:

答案 0 :(得分:0)

如果您在评论[con release]后运行代码,则会提供文件的确切大小。

答案 1 :(得分:0)

请勿使用NSURLConnection,而是在您的情况下使用NSURLSessionNSURLSessionDownloadTask。您可以使用countOfBytesExpectedToReceive的属性“NSURLSessionTask”来获取下载文件的长度,NSURLSessionDownloadTaskAFNetworking的超类。有各种美丽的图书馆可供网络使用。例如,您可以使用NSURLSessionDelegate。或者你可以编写自己的代码。以下是一些可能对您有用的链接:

PS:您可以使用fuffa方法进行下载任务,从而更细粒度地处理您的需求。