2016-11-24 6 views
1

投稿方法でビデオをサーバーにアップロードしています。サーバーで受信していないという問題があります。AFNetworkingを使用してiPhoneからサーバーにビデオをアップロードする方法

以下は動画を投稿するためのコードです。

このコードは、アップロード画像の上で私のために働いたが、映像に来たときにされて、私は私が私のビデオをアップロードしようとすると、MP4

にコンバータへのビデオ

AVAssetExportSessionを取得するためにUIImagePickerControllerを使用し

を失敗します、私の投稿を受信して​​いないと見られるサーバー。

私は理由を理解できませんか?

お願いします。ありがとう。

NSString *boundary = @"---011000010111000001101001"; 
NSMutableData *body = [NSMutableData data]; 


NSDictionary *headers = @{ @"content-type": @"multipart/form-data; boundary=---011000010111000001101001", 
          @"cache-control": @"no-cache"}; 



[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", @"uid"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"%@\r\n", name] dataUsingEncoding:NSUTF8StringEncoding]]; 



[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", @"title"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"%@\r\n", title] dataUsingEncoding:NSUTF8StringEncoding]]; 

[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", @"note"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"%@\r\n", note] dataUsingEncoding:NSUTF8StringEncoding]]; 

[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

if (videoData) { 

    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=%@.mp4; filename=%@.mp4\r\n", @"file", @"video1"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[@"Content-Type: multipart/form-data; boundary=---011000010111000001101001\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[@"Content-Type: video/mp4\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:videoData]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 

} 
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

NSError *errorFormAppend; 

AFHTTPRequestSerializer *serializer = [AFJSONRequestSerializer serializer]; 
NSMutableURLRequest *request = [serializer multipartFormRequestWithMethod:@"POST" URLString:@"url" parameters:nil 
               constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 



                [formData appendPartWithHeaders:headers body:body]; 

                 NSError *error = errorFormAppend; 

                NSLog(@"errorFormAppend: %@", error); 

               // [formData appendPartWithFileData:imageData name:@"file[]" fileName:@"video1.mp4" 
               } error:nil]; 

NSString *contentType = [NSString stringWithFormat:@"multipart/form-data"]; 
    [request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 

[request setHTTPBodyStream:[NSInputStream inputStreamWithFileAtPath:[originVideoURL path]]]; 
[request setAllHTTPHeaderFields:headers]; 
[request setHTTPBody:body]; 


[request addValue:@"video/mp4" forHTTPHeaderField:@"Content-Type"]; 
[request setTimeoutInterval:60.0]; 

AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"multipart/form-data",@"text/html",nil]; 
[manager.requestSerializer setTimeoutInterval:60.0]; 

NSURLSessionUploadTask *uploadTask; 
uploadTask = [manager 
       uploadTaskWithStreamedRequest:request 
       progress:^(NSProgress * _Nonnull uploadProgress) { 


        }); 
       } 
       completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { 
        if (error) { 
         NSLog(@"Error video upload: %@", error); 
        } else { 


         if (200 == [responseObject[@"status_code"] integerValue]) { 

          NSLog(@"upload Success"); 

         } else { 

         } 

        } 
       }]; 

[uploadTask resume]; 
+0

ここでの問題は何ですか? – KKRocks

+0

サーバーリターンエラーですが、画像上で作業します – williamliao

答えて

0

*

Try this 
NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:[NSString stringWithFormat:@"%@%@",BASEURL,url] parameters:parameter constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
      if (videoData) { 
       [formData appendPartWithFileData: videoData name:@"video_file" fileName:@"video_file.mp4" mimeType:@"video/mp4"]; 

       // you file to upload 
      } 
     }error:nil]; 

     AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 
     manager.responseSerializer = [AFJSONResponseSerializer serializer]; 

     NSURLSessionUploadTask *uploadTask; 
     uploadTask = [manager 
         uploadTaskWithStreamedRequest:request 
         progress:^(NSProgress * _Nonnull uploadProgress) { 
          dispatch_async(dispatch_get_main_queue(), ^{ 
          }); 
         } 
         completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { 
          if (error) { 
           NSLog(@"Error: %@", [[NSString alloc]initWithData:[[error valueForKey:@"userInfo"] valueForKey:@"com.alamofire.serialization.response.error.data"] encoding:NSUTF8StringEncoding]); 

          } else { 
          } 
         }]; 

     [uploadTask resume]; 

*

+0

助けていただきありがとうございます。 – williamliao

+0

サーバからアップロードエラーが発生しました。 – williamliao

+0

エラーメッセージが表示されます。 – KKRocks

0
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
     manager.requestSerializer = [AFJSONRequestSerializer serializer]; 

     AFHTTPRequestOperation *operation = [manager POST:apiType parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData){ 
      [formData appendPartWithFileData:fileData name:@"file" fileName:strFileName mimeType:mimeType]; 

     }success:^(AFHTTPRequestOperation *operation,id responseObject){ 

      NSLog(@"JSON: %@", responseObject); 
      successHandler(operation, responseObject); 
     } 
       failure:^(AFHTTPRequestOperation *operation, NSError *error){ 
        myProgressView.progress = 1.0; 

       }]; 
     }]; 
関連する問題