1

サーバーを介してあるiPhoneから別のiPhoneにビデオ/画像を送信したい。HTTPPOSTを使用してファイルをサーバーに正常に送信しました。しかし、問題は、サーバーからファイルを受け取り、それをさらに使用するためのデータとしてそのデバイスに保存したいということです。

誰かが私に同じことをするためのサンプルコードを提案できますか?

4

2 に答える 2

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]];
于 2012-08-22T06:26:12.280 に答える
2

WiFiネットワークを使用してファイル転送を行うことができます

Bonjourを使用してそれを行います。ここから始めることができます

Apple.DeveloperのサンプルWiTapもご覧ください。

WiTapサンプルアプリケーションは、アプリケーション間のネットワーク通信を実現する方法を示しています。Bonjourを使用すると、アプリケーションはローカルネットワーク上で自身をアドバタイズし、ネットワーク上のこのアプリケーションの他のインスタンスのリストを表示します。

接続の確立を実装し、独自の構造を記述して、データを小さなチャンクサイズとして転送します(1024の方が適しています)

于 2012-08-22T05:30:47.623 に答える