2013-05-06 9 views
15

Stworzyłem jedną aplikację, która ma dwie strony (pierwsza strona dla listy wyświetlania danych i druga strona dla danych szczegółowych show).jak pobierać pliki z adresu URL i przechowywać w folderze z dokumentami

po kliknięciu w dowolną komórkę przejdź do następnej strony i na następnej stronie istnieje jeden przycisk z nazwą: POBIERZ , który chcę, gdy kliknę na ten przycisk, ten plik zostanie pobrany i zapisany w folderze dokumentu. Nie wiem o tym. proszę, poprowadź mnie, jak pobrać dowolny plik i przechowywać w folderze dokumentu. Szukam w Internecie, ale nie rozumiem.

proszę mi powiedzieć z kodem, w jaki sposób pobrać dowolny plik za pomocą jednego przycisku. Przepraszam, jeśli nie jestem dobrym angielskim.

Odpowiedz

40

Jest to prosty przyjacielu

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]; 
} 

to zaleca się wykonanie kodu w osobnym wątku.

EDIT 1: więcej informacji

1) dla dużych pobierania plików,

-(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

przyjacielu Chcę uratować z nazwy własnej. co robię? – jacky

+0

Co masz na myśli przez samo imię? Jaki jest adres URL pliku, który zamierzasz pobrać, na przykład? –

+0

Mój znajomy Chcę, aby po kliknięciu przycisku uruchom określony adres URL i pobierz plik. – jacky