2017-09-26 8 views
0

ダウンロードするかどうかを判断するには、urlからファイルサイズを取得する必要があります。私はNSMutableURLRequestで試しましたが、デリゲートで-1を常に返します。そして、NSMutableURLRequestメソッドは現在廃止されています。 .h fileにすべてのデリゲート(NSURLConnectionDelegateNSURLConnectionDownloadDelegateNSURLConnectionDataDelegate)を追加しましたが、機能しません。私のコードは次のとおりです。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

@ Torono、あなたの見てくれてありがとうが、私はすでにコメントしています。もう働かない。応答は(-1) –

答えて

0

[con release]とコメントした後にコードを実行すると、ファイルの正確なサイズが得られます。

+0

コメントからすでに解決しました。問題は私の本当のURLです。このURLは機能しています。 –

0

NSURLConnectionを使用しないでください。代わりにNSURLSessionNSURLSessionDownloadTaskを使用してください。 NSURLSessionDownloadTaskのスーパークラスであるNSURLSessionTaskのプロパティ 'countOfBytesExpectedToReceive'を使用して、ダウンロードファイルの長さを取得できます。ネットワーキングにはさまざまな美しいライブラリがあります。たとえば、AFNetworkingを使用できます。あるいは独自のコードを書くこともできます。

PS:あなたがダウンロードタスクのためのNSURLSessionDelegate方法を用いることにより、より細かいレベルでの要件を扱うことができ、あなたに有用である可能性がここにいくつかのリンクあり。

+0

コメントからすでに解決済みです。問題は私の本当のURLです。このURLは機能しています。 –

+0

これは良いことですが、今後はNSURLSessionを使用してください。 – Rishi

関連する問題