前回はフレーム単位で画像保存する方法についてご紹介いたしました。
今回はその保存した画像をサーバーにアップロードする方法をご紹介いたします。
ただ、画像をアップロードをするわけではなく、ライブ配信を実現するには
撮りながら画像をアップロードする必要があります。
前回でフレームごとに画像を保存するまではできているのでそこにサーバーへの
アップロードの処理を追加いたします。
開発環境は前回と同様「Xcode」を利用します。
サーバーはXAMMPを代用して確認してみます。
スマホからのXAMMP接続は調べたらでてくるので省略します。
初めにネイティブ側の処理、通信部分を記載します。
// NSString *urlString = @"http://○○/upload/upload.php"; // ここは前回のdataをいれています NSData *imageData = data; // 送信データの境界 NSString *boundary = @"1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; // アップロードする際のパラメーター名とファイル名 NSString *uploadName = @"postfile"; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyyMMddHHmmss"]; NSString *uploadFileName = [dateFormatter stringFromDate:[NSDate date]]; NSMutableString *sendDataStringPrev = [NSMutableString stringWithString:@"--"]; [sendDataStringPrev appendString:boundary]; [sendDataStringPrev appendString:@"\r\n"]; [sendDataStringPrev appendString:[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@.jpg\"\r\n",uploadName,uploadFileName]]; [sendDataStringPrev appendString:@"Content-Type: image/jpeg\r\n\r\n"]; NSMutableString *sendDataStringNext = [NSMutableString stringWithString:@"\r\n"]; [sendDataStringNext appendString:@"--"]; [sendDataStringNext appendString:boundary]; [sendDataStringNext appendString:@"--"]; // 送信データの生成 NSMutableData *sendData = [NSMutableData data]; [sendData appendData:[sendDataStringPrev dataUsingEncoding:NSUTF8StringEncoding]]; [sendData appendData:imageData]; [sendData appendData:[sendDataStringNext dataUsingEncoding:NSUTF8StringEncoding]]; // リクエストヘッダー NSDictionary *requestHeader = [NSDictionary dictionaryWithObjectsAndKeys: [NSString stringWithFormat:@"%lu",(unsigned long)[sendData length]],@"Content-Length", [NSString stringWithFormat:@"multipart/form-data;boundary=%@",boundary],@"Content-Type",nil]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]]; [request setAllHTTPHeaderFields:requestHeader]; [request setHTTPMethod:@"POST"]; [request setHTTPBody:sendData]; [NSURLConnection connectionWithRequest:request delegate:self];
次にアップロード画像の保存について記載します。
前々回と同じ内容になります。
<?php if (is_uploaded_file($_FILES["postfile"]["tmp_name"])) { if (move_uploaded_file($_FILES["postfile"]["tmp_name"], "file/" . $_FILES["postfile"]["name"])) { echo "File uploaded successfully"; } } ?>
それでは実際にためしてみましょう。
動画撮影中は指定したフォルダに入ってくると思います。
ただ、現状だとアップされる画像の頻度が遅いため、同期でアップしているのか、
フレームの保存に時間がかかっているのかを次回以降、調査していこうと思います。
以上で画像をサーバーにアップロードする方法についての紹介でした。
最後までご覧いただきありがとうございました。
■アップロードした画像
弊社では全国各地の請負い(ご自宅)で作業協力頂ける、フリーランスエンジニアの方を常時探しております。
ご興味ある方は、お気軽にお問い合わせ下さい。