サーバーを介してあるiPhoneから別のiPhoneにビデオ/画像を送信したい。HTTPPOSTを使用してファイルをサーバーに正常に送信しました。しかし、問題は、サーバーからファイルを受け取り、それをさらに使用するためのデータとしてそのデバイスに保存したいということです。
誰かが私に同じことをするためのサンプルコードを提案できますか?
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]];
WiFiネットワークを使用してファイル転送を行うことができます
Bonjourを使用してそれを行います。ここから始めることができます
Apple.DeveloperのサンプルWiTapもご覧ください。
WiTapサンプルアプリケーションは、アプリケーション間のネットワーク通信を実現する方法を示しています。Bonjourを使用すると、アプリケーションはローカルネットワーク上で自身をアドバタイズし、ネットワーク上のこのアプリケーションの他のインスタンスのリストを表示します。
接続の確立を実装し、独自の構造を記述して、データを小さなチャンクサイズとして転送します(1024の方が適しています)