2017-09-26 13 views
0

URL을 다운로드해야하는지 여부를 결정하려면 파일 크기가 필요합니다. NSMutableURLRequest으로 시도했지만 위임에서는 항상 -1을 반환합니다. 그리고 NSMutableURLRequest 메서드는 현재 사용되지 않습니다. .h file에 모든 대표 (NSURLConnectionDelegate, NSURLConnectionDownloadDelegate, NSURLConnectionDataDelegate)를 추가했지만 작동하지 않습니다. 내 코드는 다음과 같습니다 How to find size of a file before downloading it in iOS 7?iOS 10 다운로드하기 전에 파일 크기를 확인하십시오.

아이폰 OS 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

댓글에서 이미 해결되었습니다. 문제는 내 실제 URL입니다. 이 URL은 작동 중입니다. –

0

NSURLConnection을 사용하지 말고 NSURLSession과 함께 NSURLSessionDownloadTask을 사용하십시오. NSURLSessionDownloadTask의 수퍼 클래스 인 NSURLSessionTask의 속성 'countOfBytesExpectedToReceive'을 사용하여 다운로드 파일 길이를 가져올 수 있습니다. 네트워킹에 사용할 수있는 다양한 아름다운 라이브러리가 있습니다. 예를 들어 AFNetworking을 사용할 수 있습니다. 또는 자신 만의 코드를 작성할 수 있습니다. 여기에 몇 가지 링크가 당신에게 도움이 될 수 있습니다

PS : 당신은 좀 더 세부적인 수준에서 귀하의 요구 사항을 처리 할 수있는 다운로드 작업에 대한 NSURLSessionDelegate 방법을 사용하여 .

+0

댓글에서 이미 해결되었습니다. 문제는 내 실제 URL입니다. 이 URL은 작동 중입니다. –

+0

좋습니다.하지만 앞으로 NSURLSession을 사용하십시오. – Rishi