如何从URL下载文件并存储在文件夹中

jac*_*cky 17 objective-c download ios

我创建了一个具有两个页面的应用程序(显示数据列表的第一页和显示详细数据的第二页).

当点击任何单元格转到下一页并在下一页中存在一个名称为DOWNLOAD的按钮,当我点击该按钮时,我想要下载该文件下载并保存在文档文件夹中.我不知道.请指导我如何下载任何文件并存储在文件夹中.我在互联网上搜索,但我不明白.

请告诉我代码,如何用一个按钮下载任何文件.对不起,如果我英语不好.

Thi*_*ama 46

这是我的朋友,

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];
}
Run Code Online (Sandbox Code Playgroud)

建议在单独的线程中执行代码.

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

    });

}
Run Code Online (Sandbox Code Playgroud)