Как загружать файлы из url и хранить в папке с документами - программирование
Подтвердить что ты не робот

Как загружать файлы из url и хранить в папке с документами

Я создал одно приложение, имеющее две страницы (первая страница для отображения списка данных и вторая страница для отображения подробных данных).

при нажатии любой ячейки перейдите на следующую страницу и на следующей странице существует одна кнопка с именем: DOWNLOAD что я хочу, когда я нажимаю на эту кнопку, этот файл загружается и сохраняется в папке с документами. Я не знаю об этом. сообщите мне, как загружать любой файл и хранить его в папке с документами. Я ищу в Интернете, но я не понимаю об этом.

скажите, пожалуйста, с кодом, как загружать любой файл с помощью одной кнопки. Мне жаль, если я не хороший английский.

4b9b3361

Ответ 1

Это простой мой друг,

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 !");
            });
        }

    });

}