Uploading video file to server from iPhone

前端 未结 1 517
Happy的楠姐
Happy的楠姐 2021-01-03 09:27

I know how to upload images to a server running PHP, but I am stuck on uploading video.

I have used this advice to upload my video file.

Posting method is a

相关标签:
1条回答
  • 2021-01-03 09:55

    for posting video you need to use this function after image picker delegate

    - (NSData *)generatePostDataForData:(NSData *)uploadData
    {
        // Generate the post header:
        NSString *post = [NSString stringWithCString:"--AaB03x\r\nContent-Disposition: form-data; name=\"upload[file]\"; filename=\"somefile\"\r\nContent-Type: application/octet-stream\r\nContent-Transfer-Encoding: binary\r\n\r\n" encoding:NSASCIIStringEncoding];
    
        // Get the post header int ASCII format:
        NSData *postHeaderData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    
        // Generate the mutable data variable:
        NSMutableData *postData = [[NSMutableData alloc] initWithLength:[postHeaderData length] ];
        [postData setData:postHeaderData];
    
        // Add the image:
        [postData appendData: uploadData];
    
        // Add the closing boundry:
        [postData appendData: [@"\r\n--AaB03x--" dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]];
    
        // Return the post data:
        return postData;
    }
    
    
    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ 
    
        //assign the mediatype to a string 
        NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
    
        //check the media type string so we can determine if its a video
        if ([mediaType isEqualToString:@"public.movie"]){
            NSLog(@"got a movie");
            NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
            NSData *webData = [NSData dataWithContentsOfURL:videoURL];
            [self post:webData];
            [webData release];
    
        }
    

    for post video use this function

    - (void)post:(NSData *)fileData
    {
    
        NSLog(@"POSTING");
    
        // Generate the postdata:
        NSData *postData = [self generatePostDataForData: fileData];
        NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
    
        // Setup the request:
        NSMutableURLRequest *uploadRequest = [[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.example.com:3000/"] cachePolicy: NSURLRequestReloadIgnoringLocalCacheData timeoutInterval: 30 ] autorelease];
        [uploadRequest setHTTPMethod:@"POST"];
        [uploadRequest setValue:postLength forHTTPHeaderField:@"Content-Length"];
        [uploadRequest setValue:@"multipart/form-data; boundary=AaB03x" forHTTPHeaderField:@"Content-Type"];
        [uploadRequest setHTTPBody:postData];
    
        // Execute the reqest:
        NSURLConnection *conn=[[NSURLConnection alloc] initWithRequest:uploadRequest delegate:self];
        if (conn)
        {
            // Connection succeeded (even if a 404 or other non-200 range was returned).
            NSLog(@"sucess");
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Got Server Response" message:@"Success" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alert show];
            [alert release];
        }
        else
        {
            // Connection failed (cannot reach server).
            NSLog(@"fail");
        }
    
    }
    
    0 讨论(0)
提交回复
热议问题