0

可能重复:
iOS 下载并在应用内保存图像

我想下载一个文件。我找到了这个

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

我的问题是:

  1. 文件保存在哪里?

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

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

现在我正在使用

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。那不应该是实际图像的大小吗?

4

5 回答 5

1
  1. 文件未保存。它被加载/检索并转换为NSData对象。
  2. 是的。但是,如果您这样做,您应该查看NSURLConnection特别是NSURLConnectionDataDelegate协议。您需要异步下载文件并将回调获取到委托中,以便能够更新您的状态栏。或者您可以使用 3rd 方网络库来简化整个事情,但最好了解幕后发生的事情。
  3. 是的。您可以在NSData下载对象时将其另存为文件。如果您使用的是 Cocoa(不是 iOS),您可以使用NSURLDownload直接下载文件。
于 2012-12-13T06:03:01.680 回答
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

于 2012-12-13T06:02:42.760 回答
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];
于 2012-12-13T06:03:50.333 回答
0

试试这个代码对我有用。图像将保存到您的相册。

   -(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
}
于 2012-12-13T06:07:23.680 回答
0

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

于 2012-12-13T06:10:51.517 回答