2014-02-21 7 views
1

Я пытаюсь загрузить видео на сервер. У меня есть два варианта для загрузки видео. Первый - взять видео и загрузить его на сервер. Во-вторых, выберите видео из библиотеки фотографий и загрузите его на сервер.Загрузка видео на сервер в iOS

Этап 1: В этом сценарии снимать видео и загружать его на сервер работает хорошо.

Получил ответ от сервера: «Return String: {« jsonstatus »:« ok »,« message »:« Спасибо за ваше сообщение ».}».

Теперь я пытаюсь получить это видео с сервера. В media_file говорится: «x.x.x.x/video/96b8954fbed797500da708fd7bad2261video.mov» - я успешно воспроизвел это видео.

Шаг 2: Но когда я выбираю видео из библиотеки фотографий, он успешно выбрал видео. Теперь я отправляю это видео на сервер.

Получил ответ от сервера: «Return String: {« jsonstatus »:« ok »,« message »:« Спасибо за ваше сообщение ».}».

Теперь я пытаюсь получить это видео с сервера. В media_file он говорит: "Invalid File"

Am помощью выбрать видео,

- (IBAction)act_UploadVideoBtn:(id)sender 
{ 
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
    imagePicker.delegate = self; 
    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    imagePicker.mediaTypes = [[NSArray alloc] initWithObjects:(NSString *)kUTTypeMovie,  nil]; 

    [self presentViewController:imagePicker animated:YES completion:NULL]; 
} 

И метод Делегат,

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

// movieURL = [info valueForKey:UIImagePickerControllerMediaURL]; 
//  
// [picker dismissViewControllerAnimated:YES completion:NULL]; 


    NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType]; 

    if (CFStringCompare ((__bridge CFStringRef) mediaType, kUTTypeMovie, 0) == kCFCompareEqualTo) { 
     NSString *moviePath = [[info objectForKey:UIImagePickerControllerMediaURL] path]; 
     // NSLog(@"%@",moviePath); 
     movieURL=(NSURL*)[info objectForKey:UIImagePickerControllerMediaURL]; 

     if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath)) { 
      UISaveVideoAtPathToSavedPhotosAlbum (moviePath, nil, nil, nil); 
     } 
    } 

    [picker dismissViewControllerAnimated:YES completion:NULL]; 
} 

Дайте какие-нибудь идеи, чтобы решить эту проблему.

ответ

0

Не могли бы вы описать свою серверную сторону? До сих пор я понимаю, что это может быть проблема с полным URL-адресом. Может быть, фрагменты вашего json? Возможно, просмотрите свои права на папку, в которую вы пишете. Если вы используете ubuntu и lamp в качестве стека (noob я знаю), убедитесь, что он r + w, но не exec.

0
//push video path to NSData 
NSData *webData = [NSData dataWithContentsOfURL:movieURL];  

NSURL *url = [NSURL URLWithString:@"http://www.example.com/upload_media.php"]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
[request setHTTPMethod:@"POST"]; 
NSString *boundary = @"+++++ABck"; 
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; 
boundary=%@", boundary]; 
[request addValue:contentType forHTTPHeaderField:@"Content-Type"]; 
NSMutableData *body = [NSMutableData data]; 

[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"file\"; filename=\"YOURFILENAME\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[@"Content-Type: video/quicktime\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];//video/quicktime for .mov format 
[body appendData:[NSData dataWithData:webData]]; 
[body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] 
dataUsingEncoding:NSUTF8StringEncoding]]; 
[request setHTTPBody:body]; 

NSURLResponse *response; 
NSError *error; 

[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
NSLog(@"%@",response); 
NSLog(@"%@",error); 


/*Server code*/ 
move_uploaded_file($_FILES["file"]["tmp_name"],$upload_dir['basedir'].'YOUR_DIR']); 
Смежные вопросы