从iPhone上传video文件到服务器

我知道如何将图像上传到运行PHP的服务器,但我仍然坚持上传video。

我已经使用这个建议来上传我的video文件。

发布方法都可以。 我在服务器上得到的是一个0字节的文件。

我的代码如下:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL]; NSData *videoData = [NSData dataWithContentsOfFile:[videoURL path]]; } 

这个videoData在我的POST方法中传递。

我该怎么做呢?

要发布video,您需要在图像选择器委托后使用此function

 - (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]; } 

对于后期video使用此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"); } }