从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"); } }
- 带有AutoLayout的UICollectionView Cell + UiLabel
- 禁用icloud上的文件夹及其所有子文件夹的备份?
- SKSpriteNode – 创build一个圆angular节点?
- IOS中的Facebooklogin在模拟器上工作,但不能在安装了本地应用程序的设备上工作
- 为什么我得到这个错误使用XCode 4为我的iPhone项目build立一个静态库?
- 基本数据types与非基本数据types(苹果定义数据types)有什么区别?
- 使用Google地图API在100个半径范围内使用相同产品的人的GPS位置
- UILocalNotification点击事件
- 如何使一个UIPickerView幻灯片在屏幕上的一半?