iOS文件下载

时间:2012-12-13 05:53:52

标签: iphone ios download

  

可能重复:
  iOS download and save image inside app

我想下载一个文件。我发现了这个

[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://lasp.colorado.edu/home/wp-content/uploads/2011/03/suncombo1.jpg"]]

我的问题是:

  1. 文件保存在哪里?

  2. 通过使用线程,是否有可能为下载构建状态栏?

  3. 有没有办法更改内存(内部/外部)以保存文件?

  4. 现在我正在使用

    NSData *dataImage = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://lasp.colorado.edu/home/wp-content/uploads/2011/03/suncombo1.jpg"]]; downloadStatus.text =@"size: %zd", malloc_size(dataImage);

    结果总是32.不应该是实际图像的大小吗?

5 个答案:

答案 0 :(得分:1)

  1. 文件未保存。它被加载/检索并转换为NSData对象。
  2. 是。但是,如果您这样做,则应该查看NSURLConnection,尤其是NSURLConnectionDataDelegate协议。您需要异步下载文件并将回调函数放入代理中才能更新状态栏。或者你可以使用第三方网络库来简化整个过程,但是了解幕后发生的事情是很好的。
  3. 是。您可以在下载NSData对象时将其保存为文件。如果您使用的是Cocoa(不是iOS),则可以使用NSURLDownload直接下载文件。

答案 1 :(得分:0)

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDownloadProgressDelegate:myProgressIndicator];
[request startSynchronous];
NSLog(@"Max: %f, Value: %f", [myProgressIndicator maxValue],[myProgressIndicator doubleValue]);

你也可以点击这个链接来做更多的事情:) http://allseeing-i.com/ASIHTTPRequest/How-to-use

答案 2 :(得分:0)

您可以将下载的数据分配给变量并在UIImageView中显示如下。

NSData *dataImage = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://lasp.colorado.edu/home/wp-content/uploads/2011/03/suncombo1.jpg"]];
self.imageViewYours.image = [UIImage imageWithData:dataImage];

答案 3 :(得分:0)

尝试使用此代码。图像将保存到您的PhotoAlbum。

   -(IBAction)save_Image:(id)sender
    {
        UIImageWriteToSavedPhotosAlbum([UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"Your URL"]]]], self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

            [self performSelectorOnMainThread:@selector(imageDownloaded) withObject:nil waitUntilDone:NO ];

    }

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
{
    if (error != NULL)
    {
        // handle error
    }
    else
    {
        // handle ok status
    }
}

- (void)imageDownloaded
{

      // network animation off
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;



    // do whatever you need to do after
}

答案 4 :(得分:0)

由于你是Obj-C的新手,我首先要熟悉NSURLConnection和NSURLConnectionDataDelegate(协议)。一旦您感觉自己知道发生了什么,您就可以轻松切换到AFNetworking等网络库,以简化操作。