如何在iPhone中存储来自服务器的视频/图像文件

时间:2012-08-22 05:22:58

标签: iphone xcode ios5

我想通过服务器将视频/图像从一个iPhone发送到另一个iPhone。 我已使用HTTP POST将文件成功发送到服务器。但问题是我想从服务器接收文件并将其作为数据存储在该设备中以供进一步使用。

任何人都可以建议我做同样的示例代码吗?

2 个答案:

答案 0 :(得分:4)

您使用Post将数据成功发布到服务器。对?现在,您可以制作用于下载图像/视频的API。完成数据后,将其放在应用程序的文档文件夹中。 关于API,最简单的方法是,只需创建一个指向该文件的链接,然后使用NSURLConnection进行下载。

创建要下载的URL连接:

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:strFileUrl]]; //strFileURL is url of your video/image
NSURLConnection *conection = [[[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO] autorelease];
[conec start];
[request release];

获取保存数据的文件路径:

strFilePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:strFileName];

你的班级必须采用NSURLConnectionDelegate协议的3种方法:(请阅读有关协议和代表的内容)

- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    // create 
    [[NSFileManager defaultManager] createFileAtPath:strFilePath contents:nil attributes:nil];
    file = [[NSFileHandle fileHandleForUpdatingAtPath:strFilePath] retain];// read more about file handle
    if (file)   {
        [file seekToEndOfFile];
    }
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)receivedata
{    
    //write each data received
    if( receivedata != nil){
        if (file)  { 
            [file seekToEndOfFile];
        } 
        [file writeData:receivedata]; 
    }
}

- (void)connectionDidFinishLoading:(NSURLConnection*)theConnection {
    //close file after finish getting data;
    [file closeFile];
}

- (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    //do something when downloading failed
}

如果要查看您的文件,请使用UIWebview加载它:

NSURL *fileURL = [NSURL fileURLWithPath:strFilePath];
[wvReview loadRequest:[NSURLRequest requestWithURL:fileURL]];

答案 1 :(得分:2)

您可以使用 WiFi网络进行文件传输

使用 Bonjour 进行操作。你可以从here

开始

另请参阅Apple.Developer示例WiTap

WiTap示例应用程序演示了如何在应用程序之间实现网络通信。使用Bonjour,应用程序都在本地网络上进行通告,并在网络上显示该应用程序的其他实例列表。

实现连接建立并编写自己的结构以将数据传输为小块大小(1024更好)