2013-02-19 2 views
-2

Я хочу получить папку, содержащую 10 изображений с сервера, а затем сохранить эту папку в каталоге документов. Я сделал некоторый код, но когда я запустил его, я получаю URL-адреса изображений, а не сами изображения. Может кто-нибудь мне помочь?Как получить набор изображений с сервера и сохранить его в каталоге документов в iOS?

Мой код:

-(void)viewWillAppear:(BOOL)animated 
{ 

NSMutableData *receivingData = [[NSMutableData alloc] init]; 
NSURL *url = [NSURL URLWithString:@"http://Someurl.filesCount.php"]; 
NSURLRequest *req = [NSURLRequest requestWithURL:url]; 


    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:req delegate:self startImmediately:YES]; 

} 

-(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 

[receivingData appendData:data]; 
} 
-(void) connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
NSError *error = nil; 

{ 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *path = [paths objectAtIndex:0]; 
printf("\n the path is :%s",[path UTF8String]); 


NSString *zipPath = [path stringByAppendingPathComponent:@"filesCount.php"]; 

[receivingData writeToFile:zipPath options:0 error:&error]; 



     NSString *documentsDirectoryPath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"filesCount"]; 
     NSLog(@"the path %@",documentsDirectoryPath); 



} 
+0

Вы правильно загрузив изображение и сохранить изображение проверить эту ссылку, может это поможет вам немного http://stackoverflow.com/questions/6821517/save-an-image-to-application-documents-folder -from-uiview-on-ios – Exploring

ответ

1

Я сделал эту функцию в своем предыдущем проекте. Вам необходимо передать свой imageView и serverUrl, а затем автоматически отобразить изображение в вашем изображенииПросмотреть и сохранить изображение в каталог temp, если вы хотите снова получить одно и то же изображение, а затем в следующий раз получить изображение с диска.

+(void)downloadingServerImageFromUrl:(UIImageView*)imgView AndUrl:(NSString*)strUrl{ 

NSFileManager *fileManager =[NSFileManager defaultManager]; 

NSString* theFileName = [NSString stringWithFormat:@"%@.png",[[strUrl lastPathComponent] stringByDeletingPathExtension]]; 
NSString *fileName = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"tmp/%@",theFileName]]; 


imgView.backgroundColor = [UIColor darkGrayColor]; 
UIActivityIndicatorView *actView = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
[imgView addSubview:actView]; 
[actView startAnimating]; 
CGSize boundsSize = imgView.bounds.size; 
CGRect frameToCenter = actView.frame; 
// center horizontally 
if (frameToCenter.size.width < boundsSize.width) 
    frameToCenter.origin.x = (boundsSize.width - frameToCenter.size.width)/2; 
else 
    frameToCenter.origin.x = 0; 

// center vertically 
if (frameToCenter.size.height < boundsSize.height) 
    frameToCenter.origin.y = (boundsSize.height - frameToCenter.size.height)/2; 
else 
    frameToCenter.origin.y = 0; 

actView.frame = frameToCenter; 


dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 
dispatch_async(queue, ^{ 

    NSData *dataFromFile = nil; 
    NSData *dataFromUrl = nil; 

    dataFromFile = [fileManager contentsAtPath:fileName]; 
    if(dataFromFile==nil){ 
     dataFromUrl=[[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:strUrl]] autorelease]; 
    } 

    dispatch_sync(dispatch_get_main_queue(), ^{ 

     if(dataFromFile!=nil){ 
      imgView.image = [UIImage imageWithData:dataFromFile]; 
     }else if(dataFromUrl!=nil){ 
      imgView.image = [UIImage imageWithData:dataFromUrl]; 
      // NSString *fileName = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"tmp/%@",theFileName]]; 

      BOOL filecreationSuccess = [fileManager createFileAtPath:fileName contents:dataFromUrl attributes:nil]; 
      if(filecreationSuccess == NO){ 
       NSLog(@"Failed to create the html file"); 
      } 

     }else{ 
      imgView.image = [UIImage imageNamed:@"NO_Image.png"]; 
      imgView.tag = 105; 
     } 
     [actView removeFromSuperview]; 
     [actView release]; 
    }); 
}); 

} 
0

Если вы будете показывать изображения, загруженные с сервера на пользовательском интерфейсе, то

попробовать SDWebImageView, могут быть использованы с UIButton или UIImageView, очень легким и эффективным.

пример,

[yourImageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] 
       placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 

Read how to use it?

Хорошо, теперь для нескольких изображений, возможно, потребуется запустить цикл, если у Вас есть общий базовый URL для всех ваших фотографий (на сервере) что-то вроде http://yoururl/server/pictures/1.png будет заменено на 2.png 3.png ... n.png, или вы получите разные URL-адреса для изображений, которые необходимо передать этому URL-адресу, вы можете загрузить его в объекты изображения, а затем сохранить их в каталоге документов (помните, SDWebImageView по умолчанию выполняли эту работу за вас). Вы также можете отключить это.

P.S. Он будет загружать изображения один раз и храниться в локальном (в кеше) сам, в следующий раз, когда вы передаете один и тот же URL-адрес изображения, он не будет загружаться с сервера и загружать изображение напрямую из локального.

+0

Я не получил u, что вы сказали @Hemang –

+0

Прошли ли вы через какую-либо ссылку из ответа? – Hemang

0

Попробуйте использовать этот код.

NSURL* url = [NSURL URLWithString:@"http://imageAddress.com"]; 
NSURLRequest* request = [NSURLRequest requestWithURL:url]; 


[NSURLConnection sendAsynchronousRequest:request 
queue:[NSOperationQueue mainQueue] 
completionHandler:^(NSURLResponse * response, 
    NSData * data, 
    NSError * error) { 
if (!error){ 
     // do whatever you want with directory or store images. 
    NSImage* image = [[NSImage alloc] initWithData:data]; 

} 

}]; 
+0

Нет, я не получаю .. @ Vinu1991 –

+0

Замените весь свой код на это. Это предоставит вам все изображения из папки сервера. вы можете хранить эти файлы (изображения) отдельно в своем целевом каталоге. –

+0

Я пробовал, но не получаю, будет помогать мне через почту [email protected] - это мой почтовый идентификатор .. @ Vinu1991 –

0

Используйте этот код для загрузки изображения с помощью URL-адреса и сохранения в каталоге документов. Итерируйте логику для набора изображений для загрузки и сохранения.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString *imageURL = @"http://sampleUrl"; 
     NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder 
     UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imageURL]]]; 

     NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"Image1.png"]]; 
     if(image != NULL) 
     { 
      //Store the image in Document 
      NSData *imageData = UIImagePNGRepresentation(image); 
      [imageData writeToFile: imagePath atomically:YES]; 
     } 
Смежные вопросы