代码之家  ›  专栏  ›  技术社区  ›  Frank

可以把图片下载到iphone上吗?

  •  0
  • Frank  · 技术社区  · 16 年前

    我正在构建一个应用程序,在那里我们可以更新图像和视频,我想知道是否可以从一个网络服务下载视频/图像,该服务将以编程方式将这些资产托管在iphone上的某个地方?

    也许通过curl服务或ftp?

    3 回复  |  直到 16 年前
        1
  •  1
  •   Ben Gottlieb    16 年前

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

        2
  •  1
  •   Ron Srebro    16 年前

    最简单的方法可能是:

    [NSData dataWithContentsOfURL:fileURL]
    

    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];
    

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

        3
  •  0
  •   Andrew Kuklewicz    16 年前

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

    对于下载,我建议使用可爱的all-seening I ASIHTTPRequest lib来进行文件到磁盘的异步/后台下载,并提供进度信息和带宽限制(这是关键)。

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

    另一个需要考虑的问题是,如果不在WiFi上,苹果将拒绝使用过多带宽的应用程序,所以要么你需要将大量下载限制在WiFi上,要么你需要将带宽限制在1mb/分钟左右。ASIHTTPRequest在这方面做得很好,虽然它不能保证不被苹果封杀,但它比不节流要好得多。

    另外值得一提的是,对于流式视频,您现在必须使用http实时流媒体,但是如果您没有在下载时播放,而只是下载它以便以后播放,我想您需要担心的是,您不需要超出带宽限制,使用一种有效的格式,并将文件写入文档,以便在发布和应用程序更新之间保留该文件。