2010-01-25 64 views
0

我正在构建一个应用程序,在这里我们为图像和视频进行更新,并想知道是否可以从Web服务下载视频/图像,以便将这些资产托管在iphone上的某个地方?是否可以将图像,视频下载到iPhone上?

也许通过curl服务或ftp?

回答

1

你可以在手机上下载任何你喜欢的东西(当然,主题是带宽和存储限制)。但是,只有特定格式的电影(例如m4v,而不是wmv文件)实际上可以在设备上播放。

0

是的,这是可能的,有多个地方(tmp和Documents)可以写入文件 - 如果您将下载的文件写入Documents目录,该文件将在下次启动应用程序时可用,并且甚至会在升级版本的应用程序之间持续存在。与安装后无法更新的应用程序的Resource目录中的文件不同,您也可以在Documents目录中写入和编辑文件。这对你来说会很棘手,因为对于任何给定的文件,应用程序安装随附的版本(在参考资料中)是无法覆盖或编辑的,然后是文档中的新版本,因此您的逻辑生病需要查看如果文档中有更新版本的内容,并播放该内容,并且在应用程序的资源目录上进行回退。

对于下载,我建议使用可爱的所有看到我ASIHTTPRequest lib进行文件到磁盘的良好的异步/后台下载,进度信息和带宽限制(这是关键)。

http://allseeing-i.com/ASIHTTPRequest/

这样做的其他部分要考虑的是,苹果将拒绝过多的带宽使用当不上无线网络的应用程序,所以无论您需要大的下载量限制为只能通过WiFi,或者你需要使用带宽到约1mb /分钟。 ASIHTTPRequest很好地完成了这个任务,虽然它不能保证不被苹果拒绝,但它比不节流更好。

另外值得一提的是,对于流式视频,您现在必须使用http实时流式传输,但如果您未在下载时播放,并且仅在稍后播放时才播放,我认为您只需要担心不会超出带宽限制,使用适用的格式,并将文件写入文档,以便在启动和应用程序更新之间保留文件。

2

有很多方法可以将文件从远程服务器下载到iPhone,有些甚至只需要一行代码。

最简单的方法可能是:

[NSData dataWithContentsOfURL:fileURL] 

但是,这将阻止你的代码,直到文件下载,更实用的解决方案可能是使用NSURLConnection的

NSURLRequest *request = [NSURLRequest requestWithURL:fileURL]; 
[NSURLConnection connectionWithRequest:request delegate:self]; 

而且实现委托NSURLConnection的方法

保存文件也可以用多种方法完成,最简单的可能是:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *localFilePath = [documentsDirectory stringByAppendingPathComponent:@"newFileName.ext"]; 
[NSData writeToFile:localFilePath atomically:YES]; 

将数据保存到应用程序的文档目录中

相关问题