2017-09-26 73 views
0

我需要從網址獲取文件大小以決定是否下載它。我嘗試了NSMutableURLRequest,但在委託中,它始終返回-1。 NSMutableURLRequest方法現在已被棄用。我在.h file中添加了所有代表(NSURLConnectionDelegateNSURLConnectionDownloadDelegate,NSURLConnectionDataDelegate),但它不起作用。我的代碼是:How to find size of a file before downloading it in iOS 7?iOS 10在下載前獲取文件大小

適用於iOS 10+任何解決方案:

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); 

} 

與已經嘗試過?

+0

爲什麼在剛剛開始下載時釋放'con'對象? – Torongo

+0

我猜文件大小應該在url的元數據中 –

+0

@Torongo,感謝您的期待,但我已經評論過該行。不工作了。答案是(-1) –

回答

0

如果您在註釋[con release]後運行代碼,它會給出文件的確切大小。

+0

解決它已經從評論。問題出在我的真實網址上。此網址正在工作。 –

0

請勿使用NSURLConnection,而應使用NSURLSession以及NSURLSessionDownloadTask。您可以通過NSURLSessionTask的屬性'countOfBytesExpectedToReceive'獲得下載文件長度,這是NSURLSessionDownloadTask的超級類別。有各種美麗的圖書館可用於網絡。例如,您可以使用AFNetworking。或者你可以編寫你自己的代碼。這裏有一些鏈接可能對你有用:

PS:你可以在更細微的層面處理您的要求使用NSURLSessionDelegate方法下載任務。

+0

已從評論中解決它。問題出在我的真實網址上。此網址正在工作。 –

+0

這很好...但使用NSURLSession向前發展。 – Rishi