2011-06-12 6 views
2

HTTP 요청을 통해 웹 서버에서 파일 [> 40MB]을 다운로드하려고합니다. 이를 위해 Apple에서 제공 한 SimpleURLConnection 샘플을 사용했습니다. 이 샘플에서는 이미지 파일 만 다운로드하기 때문에 코드를 수정하여 pdf 파일을 다운로드하고 응용 프로그램의 문서 디렉토리에 저장했습니다. 작은 파일을 다운로드하는 데 문제가 없지만 대용량 파일 [> 40MB]을 다운로드하려는 경우에만 6.4MB의 데이터를 다운로드합니다. 참고로iOS에서 대용량 파일을 다운로드하는 방법은 무엇입니까?

,

감사합니다, 제가이 문제를 해결하는 데 도움하십시오

코드를 다운로드하는 데이터

- (void)connection:(NSURLConnection *)theConnection didReceiveData:(NSData *)data 
    // A delegate method called by the NSURLConnection as data arrives. We just 
    // write the data to the file. 
{ 
    #pragma unused(theConnection) 
    NSInteger  dataLength; 
    const uint8_t * dataBytes; 
    NSInteger  bytesWritten; 
    NSInteger  bytesWrittenSoFar; 

    assert(theConnection == self.connection); 

    dataLength = [data length]; 
    dataBytes = [data bytes]; 

    bytesWrittenSoFar = 0; 
    do { 
     bytesWritten = [self.fileStream write:&dataBytes[bytesWrittenSoFar] maxLength:dataLength - bytesWrittenSoFar]; 
     assert(bytesWritten != 0); 
     if (bytesWritten == -1) { 
      [self _stopReceiveWithStatus:@"File write error"]; 
      break; 
     } else { 
      bytesWrittenSoFar += bytesWritten; 
     } 
    } while (bytesWrittenSoFar != dataLength); 
} 
+0

디버그 정보가 있습니까? 아, 그리고'assert (theConnection == self.connection)'은 여러개의 연결을 사용하면이 코드가 망가질 운명이됩니다. 'if (theConnection! = self.connection) {return;}을 사용하십시오. }'대신. –

답변

7

바퀴를 재발견하지 마십시오으로 파일을 작성! see there에 대해서는 ASIHTTP에서 다뤘습니다. 파일로 직접 다운로드 할 수있는 특정 옵션이 있습니다.

+0

+1 그리고 내가 2 번째 것입니다 – Robin

+1

Stackoverflow에서 20 초보자 질문 중 약 1에 대한 답변은 "Use ASIHttpRequest"입니다 ...! – Fattie

+0

그러나 그것은 단지 그 방법입니다 -이 모든 다운로드 문제에 대한 가장 간단한 해결책입니다 :) – LordT

2

ASIHTTP는 2011 년 9 월 현재 더 이상 개발되지 않았습니다. 많은 경우에 RestKit이 좋은 대안이지만, 다운로드 일시 중지 및 다시 시작과 같은 ASI의 많은 기능이 부족한 것으로 나타났습니다.

+0

이 스레드의 모든 업데이트. 나는 이력서 기능을 가진 큰 파일을 다운로드하는 방법을 찾으려고 노력했다. (ASI를 사용하지 않고). – fvisticot

+0

[ANDownload] (https://github.com/unixpickle/ANDownload)를 시도해 볼 수도있다. – ashack

+1

AFNetworking은 요즘처럼 움직이는 것처럼 보입니다. http://afnetworking.com –

관련 문제