How to Upload video to server from iPhone?

前端 未结 2 443
醉酒成梦
醉酒成梦 2020-12-08 12:41
-(IBAction)uploadToServer :(id)sender
{
    NSString *str1=[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@\"intro.mp4\"];
    NSLog(@\"str1=%@         


        
相关标签:
2条回答
  • 2020-12-08 13:00

    It's easy to do with the AFNetworking library and you can also use it to track the progress of the video upload. You can download AFNetworking library from here.

    And for configuring AFnetworking please refer this Link.

    And this code will used to send the video on server

     NSString *videoURL = [[NSBundle mainBundle] pathForResource:@"myVideo" ofType:@"mov"];
    NSData *videoData = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath: videoURL]];
    
    AFHTTPClient *httpClient = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://www.example.com"]];
    
    NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"/videoupload.php" parameters:nil constructingBodyWithBlock:^(id <AFMultipartFormData>formData)
    {
        [formData appendPartWithFileData:videoData name:@"file" fileName:@"myVideo.mov" mimeType:@"video/quicktime"];
    }];
    
    
    
    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest: request];
    
    [operation setUploadProgressBlock:^(NSInteger bytesWritten,long long totalBytesWritten,long long totalBytesExpectedToWrite)
     {
    
         NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
    
     }];
    
    [operation  setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {NSLog(@"Video Uploaded Successfully");}
                                      failure:^(AFHTTPRequestOperation *operation, NSError *error) {NSLog(@"Error : %@",  operation.responseString);}];
    
    
    [operation start];
    
    0 讨论(0)
  • 2020-12-08 13:16

    Store selected video URL in some variable :

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {
        if ([mediaType isEqualToString:(NSString *)kUTTypeMovie]) {
            selectedVideoURL = info[UIImagePickerControllerMediaURL];
        }
    }
    

    For latest version of AFNetworking, below code is used.

    NSMutableDictionary *dictParams1 = [[NSMutableDictionary alloc]init];
    [dictParams1 setObject:userID forKey:"userID"];
    [dictParams1 setObject:otherparam forKey: "otherparam_Key"];
    
    NSLog(@"REQUEST URL : ------------------ %@", API_URL);
    NSLog(@"PARAMETERS : ------------------ %@", dictParams1);
    
    NSString *strFileName = [NSString stringWithFormat:@"%ld.mov", [[NSDate date] timeIntervalSince1970]];
    NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:APIAddFeedVideo parameters:dictParams1 constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    
        [formData appendPartWithFileURL:selectedVideoURL name:@"videofile" fileName:strFileName mimeType:@"video/mov" error:nil]; // video/quicktime //video/mp4
    } error:nil];
    
    AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
    
    NSURLSessionUploadTask *uploadTask;
    uploadTask = [manager uploadTaskWithStreamedRequest:request progress:^(NSProgress * _Nonnull uploadProgress) {
    
        // This is not called back on the main queue.
        // You are responsible for dispatching to the main queue for UI updates
    
        dispatch_async(dispatch_get_main_queue(), ^{
            //Update the progress view
            //[progressView setProgress:uploadProgress.fractionCompleted];
        });
    } completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
        if (error) {
              NSLog(@"Error: %@", error);
        } else {
            NSLog(@"VIDEO UPLOAD RESPONSE : %@ %@", response, responseObject);
    
        }
    }];
    
    [uploadTask resume];
    
    0 讨论(0)
提交回复
热议问题