2013-05-06 32 views
15

Tôi đã tạo một ứng dụng có hai trang (trang đầu tiên để hiển thị danh sách dữ liệu và trang thứ hai để hiển thị dữ liệu chi tiết).cách tải xuống tệp từ url và lưu trữ trong thư mục tài liệu

khi nhấp vào bất kỳ ô nào đến trang tiếp theo và trang tiếp theo tồn tại một nút có tên: DOWNLOAD mà tôi muốn khi tôi nhấp vào nút này tải xuống tệp và lưu vào thư mục tài liệu. Tôi không biết về nó. hãy hướng dẫn tôi cách tải xuống bất kỳ tệp nào và lưu trữ trong thư mục tài liệu. Tôi tìm kiếm trên internet nhưng tôi không hiểu về nó.

hãy cho tôi biết bằng mã rằng cách tải xuống bất kỳ tệp nào bằng một nút. Xin lỗi nếu tôi không giỏi tiếng anh.

Trả lời

40

Chính điều này đơn giản bạn của tôi,

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

nó khuyến khích để thực thi mã trong một thread riêng biệt.

EDIT 1: biết thêm

1) để tải file lớn,

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

người bạn của tôi, tôi muốn lưu với tên tự. những gì tôi làm? – jacky

+0

Ý bạn là gì? URL tệp của tệp bạn sẽ tải xuống là gì, ví dụ nào? –

+0

người bạn của tôi tôi muốn khi nào bấm vào nút chạy url cụ thể và tải xuống tệp trong đó. – jacky

Các vấn đề liên quan