如何在ios中从FTP URL加载图像视图

时间:2012-11-23 10:38:29

标签: iphone objective-c ios xcode ftp

我正在尝试使用以下代码将图像从FTP URL加载到图像视图中

    NSURL * imageURL = [NSURL URLWithString:@"ftp://50.63.12.12/bpthumb.jpg"];
    NSURLRequest *request = [[NSURLRequest alloc]initWithURL:imageURL];
    UIImage * image = [[[UIImage alloc]initWithData:request]autorelease];
    UIImageView *imgView=[[UIImageView alloc]initWithFrame:CGRectMake(50, 50, 200, 200)];
    [imgView setImage:image];
    [self.view addSubview:imgView];

但它不起作用。

我知道我必须提供FTP凭据才能连接到FTP并获取ma网址中的图片。

请建议我出路。

4 个答案:

答案 0 :(得分:3)

试试这个:

NSURL *url = [NSURL URLWithString:@"ftp://user:password@host:port/path"];
NSData *data = [NSData alloc] initWithContentsOfURL:url];

这里是来自apple dev的SimpleFTPSample。试试吧。

答案 1 :(得分:1)

在连接委托中尝试类似的事情didReceiveAuthenticationChallenge:

-(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge{

    NSLog(@"challenged %@",[challenge proposedCredential]);

    if([challenge previousFailureCount]==0){
        NSURLCredential *newCredential;
        newCredential=[NSURLCredential credentialWithUser:@"xxxxxx"
                                                 password:@"xxxx"
                                              persistence:NSURLCredentialPersistenceNone];
        [[challenge sender] useCredential:newCredential
               forAuthenticationChallenge:challenge];

    } else {

        [[challenge sender] cancelAuthenticationChallenge:challenge];
        NSLog(@"Wrong username or password ");
    }


}

AXL

答案 2 :(得分:0)

好吧,你可以用

UIImage *image = [[UIImage alloc] initWithData: [NSData dataWithContentsOfURL:imageURL];

但你不应该这样做因为那将使用同步数据连接,并且很可能暂时冻结你的应用程序。 您应该使用NSURLConnection和相应的委托来异步下载映像。

有关此主题的更多提示,请查看http://developer.apple.com/library/ios/#samplecode/LazyTableImages/Introduction/Intro.html

答案 3 :(得分:0)

只需将NSURLConnection与以“ftp://”开头的路径一起使用即可。 NSURLConnection支持开箱即用的http,https,ftp和文件。