从iOS中的Web服务器显示一堆图像最简单的方法是什么?

时间:2012-12-10 21:14:26

标签: objective-c ios xcode uiimageview

我的应用程序需要能够从Web服务器/目录(即www.somedomain.com/images/)获取多个图像。图像的数量永远不会相同,我将无法访问文件的名称,因为它们也永远不会相同。我正在寻找的最终结果是让我的客户端能够通过她的ftp客户端访问她的子目录,只需将图像放入指定的文件夹,而无需将图像命名为某个名称,编写任何xml文件或任何除了将图像拖入文件夹之外的其他步骤。然后登录应用程序的客户端用户将能够获取客户端放入该目录的图像。我一直在研究Apple的simpleFTPsample项目,以便通过FTP访问。我只是想知道是否还有其他更简单的选择?原因之一是:simpleFTPsample样式需要FTP用户名和密码才能访问这些文件。我不是100%确定放置用户是否安全并在应用程序内传递。任何建议或样品都会非常感谢。

2 个答案:

答案 0 :(得分:0)

根据您将如何使用图像,也许最好的选择是创建一个网络服务,为您提供图像和相应的网址。这将提供一种解决方案,允许客户端的用户获取图像,而无需了解有关FTP的任何信息,只显示给定目录或图像的图像。该设置将允许您根据您的响应加载图像,并根据需要使用它们。下面是一小段示例代码,用于在tableview单元格中异步加载图像。

// load thumbnail images off main thread
    dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
        // backgroung processing
        UIImage *thumbnail = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"yourURL"]]];

        dispatch_async( dispatch_get_main_queue(), ^{
            // background processing complete
            [[(TableCell *) cell image] setImage:thumbnail];
            [[cell activityIndicator] stopAnimating];

            // if row selected before image loaded 
            if ([indexPath row] == [[tableView indexPathForSelectedRow] row]) {
                 if (!iPhone) {
                     [myButton setBackgroundImage:thumbnail forState:UIControlStateNormal];
                 }
             }
        });
    });

我已经创建了一个示例Web服务项目,它可以帮助您构建https://github.com/propstm/SampleWeatherApp上的github上可用的服务响应

答案 1 :(得分:0)

我建议使用一个简单的PHP脚本,将图像列在与图像相同的HTML目录中。然后,您可以使用简单的NSURLConnection调用,根据命中列表脚本的输出,下载目录中的所有图像。

this.

这样的东西
<?php

    $directory = "."; // Use your directory here

    // create a handler for the directory
    $handler = opendir($directory);

    // open directory and walk through the filenames
    while ($file = readdir($handler)) {

      // if file isn't this directory or its parent, add it to the results
      if ($file != "." && $file != "..") {
        echo "$file\n";
      }

    }

    // tidy up: close the handler
    closedir($handler);
?>

如果存在某种安全性,您可以在目录中使用.htaccess来提供登录屏障,并使用您的NSURLConnection提供凭据。

祝你好运。