【问题标题】:How to store a video/image file from a server in iPhone如何在 iPhone 中存储来自服务器的视频/图像文件
【发布时间】:2012-08-17 11:57:55
【问题描述】:

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

谁能给我推荐一个示例代码来做同样的事情?

【问题讨论】:

    标签: iphone xcode ios5


    【解决方案1】:

    您使用 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]];
    

    【讨论】:

    • Quang Hà:你能发一个示例代码吗?因为我是iPhone新手,对这些东西不太熟悉:)
    • 广哈:非常感谢。这正是我要找的
    【解决方案2】:

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

    使用 Bonjour 来完成。你可以从here开始

    另请参阅 Apple.Developer 示例 WiTap

    WiTap 示例应用程序演示了如何实现应用程序之间的网络通信。使用 Bonjour,应用程序既在本地网络上宣传自己,又在网络上显示该应用程序的其他实例的列表。

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

    【讨论】:

    • 拉姆沙德:谢谢。那么如何将视频文件存储为数据
    • 使用捆绑视频或相册视频?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 2023-04-06
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多