代码之家  ›  专栏  ›  技术社区  ›  Krunal

从URL下载文件并将其放在iPhone的资源文件夹中

  •  1
  • Krunal  · 技术社区  · 12 年前

    我是iPhone开发者的新手,

    如何从下载epub文件 url 并将其存储在资源文件夹中?

    这是我的代码片段,

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        fileData = [NSMutableData data];
        NSString *file = [NSString stringWithFormat:@"http://www.google.co.in/url?sa=t&rct=j&q=sample%20epub%20filetype%3Aepub&source=web&cd=2&ved=0CFMQFjAB&url=http%3A%2F%2Fdl.dropbox.com%2Fu%2F1177388%2Fflagship_july_4_2010_flying_island_press.epub&ei=i5gHUIOWJI3RrQeGro3YAg&usg=AFQjCNFPKsV-tieF4vKv7BXYmS-QEvd7Uw"];
        NSURL *fileURL = [NSURL URLWithString:file];
    
        NSURLRequest *req = [NSURLRequest requestWithURL:fileURL];
        NSURLConnection *conn = [NSURLConnection connectionWithRequest:req delegate:self];
    }
    
    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
    {
        [self.fileData setLength:0];
    }
    
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    {
        [self.fileData appendData:data];        
    }
    
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection
    {
        NSArray *dirArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,    NSUserDomainMask, YES);
        NSLog(@"%@", [dirArray objectAtIndex:0]);
    
        NSString *path = [NSString stringWithFormat:@"%@", [dirArray objectAtIndex:0]];
    
        if ([self.fileData writeToFile:path options:NSAtomicWrite error:nil] == NO) {
            NSLog(@"writeToFile error");
        }
        else {
            NSLog(@"Written!");
        }
    }
    

    我什么也看不见 NSLog

    1 回复  |  直到 12 年前
        1
  •  1
  •   Apurv    12 年前

    在写入时创建文件路径也存在问题。您没有在路径中指定任何文件名。在下面的行中,我使用了文件名作为“filename.txt”。给一些合适的名称,它就会写。

    NSString *path = [NSString stringWithFormat:@"%@/filename.txt", [dirArray objectAtIndex:0]];
    

    创建URL时也存在问题。这样做,

    NSString *file = [NSString stringWithString:@"http://www.google.co.in/url?sa=t&rct=j&q=sample%20epub%20filetype%3Aepub&source=web&cd=2&ved=0CFMQFjAB&url=http%3A%2F%2Fdl.dropbox.com%2Fu%2F1177388%2Fflagship_july_4_2010_flying_island_press.epub&ei=i5gHUIOWJI3RrQeGro3YAg&usg=AFQjCNFPKsV-tieF4vKv7BXYmS-QEvd7Uw"];
         NSURL *fileURL = [NSURL URLWithString:file];
    

    您已经用下面的行创建了文件数据。

    fileData = [NSMutableData data];
    

    如下所示,

    fileData = [[NSMutableData alloc]init];
    

    或者

    self.fileData = [NSMutableData data];
    

    在这里,iOS会在您的连接代理被调用之前发布文件数据。