我需要从url获取文件大小来决定我是否会下载它。我用NSMutableURLRequest
尝试了但是在委托中,它总是返回-1。现在已弃用NSMutableURLRequest
方法。我在NSURLConnectionDelegate
中添加了所有代理(NSURLConnectionDownloadDelegate
,NSURLConnectionDataDelegate
,.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+的任何解决方案?
答案 0 :(得分:0)
如果您在评论[con release]
后运行代码,则会提供文件的确切大小。
答案 1 :(得分:0)
请勿使用NSURLConnection
,而是在您的情况下使用NSURLSession
和NSURLSessionDownloadTask
。您可以使用countOfBytesExpectedToReceive
的属性“NSURLSessionTask
”来获取下载文件的长度,NSURLSessionDownloadTask
是AFNetworking
的超类。有各种美丽的图书馆可供网络使用。例如,您可以使用NSURLSessionDelegate
。或者你可以编写自己的代码。以下是一些可能对您有用的链接:
PS:您可以使用fuffa
方法进行下载任务,从而更细粒度地处理您的需求。