-(IBAction)uploadToServer :(id)sender { NSString *str1=[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"intro.mp4"]; NSLog(@"str1=%@",str1); NSString *escapedUrlString = [str1 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSLog(@"escapedUrlString=%@",escapedUrlString); NSURL *videoURL = [NSURL URLWithString:escapedUrlString]; NSLog(@"videoURL=%@",videoURL); NSData *newdata = [NSData dataWithContentsOfFile:escapedUrlString]; webdata=[NSData dataWithData:newdata]; NSLog(@"webData = %@",webdata); [self post:webdata]; } - (void)post:(NSData *)fileData { NSData *videoData = fileData; NSString *urlString = @"http://rompio.com/web_service/web.PHP?method=upload_video&user_id=4"; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; [request setURL:[NSURL URLWithString:urlString]]; [request setHTTPMethod:@"POST"]; NSString *boundary = @"---------------------------14737809831466499882746641449"; NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; [request addValue:contentType forHTTPHeaderField:@"Content-Type"]; NSMutableData *body = [NSMutableData data]; [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[@"Content-Disposition: form-data; name=\"userfile\"; filename=\".mp4\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[NSData dataWithData:videoData]]; [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; [request setHTTPBody:body]; NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; NSLog(@"returnString=== %@",returnString); }
解决方法
使用AFNetworking库很容易,您也可以使用它来跟踪视频上传的进度.您可以从
here下载AFNetworking库.
有关配置AFnetworking的信息,请参阅Link.
此代码将用于在服务器上发送视频
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];