2013-05-06 2 views
15

두 페이지 (첫 번째 페이지는 데이터 목록 표시 용이고 두 번째 페이지는 세부 정보 표시 용)가있는 하나의 응용 프로그램을 만들었습니다.URL에서 파일을 다운로드하고 문서 폴더에 저장하는 방법

셀을 클릭하면 다음 페이지로 이동하고 다음 페이지에는 이름이있는 버튼이 하나 있습니다. 다운로드 버튼을 클릭하면이 파일을 다운로드하여 문서 폴더에 저장합니다. 다운로드 나는 그것에 대해 모른다. 문서 폴더에 파일을 다운로드하고 저장하는 방법을 알려주십시오. 인터넷에서 검색 중이지만 그것에 대해 이해하지 못합니다.

버튼 하나로 모든 파일을 다운로드 한 코드를 알려주십시오. 미안하지만 영어가 잘 안되면.

답변

40

그것은

NSString *stringURL = @"http://www.somewhere.com/thefile.png"; 
NSURL *url = [NSURL URLWithString:stringURL]; 
NSData *urlData = [NSData dataWithContentsOfURL:url]; 
if (urlData) 
{ 
    NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"filename.png"]; 
    [urlData writeToFile:filePath atomically:YES]; 
} 

는 것이 좋습니다 별도의 스레드에서 코드를 실행하기 위해,이 간단한 내 친구입니다.

편집 1 : 대용량 파일 다운로드에 대한 추가 정보를 원하시면

1),

-(IBAction) downloadButtonPressed:(id)sender;{ 
    //download the file in a seperate thread. 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     NSLog(@"Downloading Started"); 
     NSString *urlToDownload = @"http://www.somewhere.com/thefile.png"; 
     NSURL *url = [NSURL URLWithString:urlToDownload]; 
     NSData *urlData = [NSData dataWithContentsOfURL:url]; 
     if (urlData) 
     { 
      NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
      NSString *documentsDirectory = [paths objectAtIndex:0]; 

      NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"filename.png"]; 

      //saving is done on main thread 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       [urlData writeToFile:filePath atomically:YES]; 
       NSLog(@"File Saved !"); 
      }); 
     } 

    }); 

} 
+0

내 친구는 내가 자기 이름으로 저장합니다. 내가 뭘? – jacky

+0

자기 이름으로 무엇을 의미합니까? 모든 파일을 다운로드 할 파일의 URL은 무엇입니까? –

+0

내 친구가 특정 URL을 실행하고 파일을 다운로드 할 때 버튼을 클릭하고 싶습니다. – jacky

관련 문제