Objective-Cで容量の大きい動画ファイルをアップロードする方法
iPhoneアプリで動画をサーバーにアップロードする機能を実装しています。
AFNetworkingを使って動画をアップロードすることには成功したのですが、
動画の容量が大きくなると、失敗するようです。
具体的には、容量が10MBを超えてくると必ず失敗します。
このように容量の大きいファイルをアップロードしたい場合は、
AFNetworkingを使わず、別の方法を模索した方がよいのでしょうか?
詳しい方、ご教示ください。
・Objective-C
// 動画を取得
NSString *dir = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *path = [dir stringByAppendingPathComponent:@"test.mov"];
NSData *videoData = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:path]];
// 動画をアップロード
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager.requestSerializer setTimeoutInterval:50];
[manager POST:@"(省略)/deployMovieTest.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:videoData name:@"movie" fileName:@"test.mov" mimeType:@"video/quicktime"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"【成功】: JSONを表示 %@", responseObject);
NSString *responseStr = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"【成功】: 文字を表示%@",responseStr);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"【失敗】: %@", error);
}];
・php
<?php
// POSTで受け取った情報は$_FILESに入っている。
// POSTで動画を受け取る。
$image = file_get_contents($_FILES['movie']['tmp_name']);
// 移動させる先のURLを作成。
$uploaddir = '(省略)/uploads/';
$uploadfile = $uploaddir.basename($_FILES['movie']['name']);
// ファイルを保存。
$message = "";
if (move_uploaded_file($_FILES['movie']['tmp_name'], $uploadfile)) {
$message = "OK!\n";
} else {
$message = "NO:)";
}
// 出力
header('Content-type: application/json');
echo json_encode($message);
?>