我们如何在ASIHTTPRequest中发布视频和图像? [英] How we Can post Video and Image in ASIHTTPRequest?
本文介绍了我们如何在ASIHTTPRequest中发布视频和图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
$ p>
NSString * url = [NSString stringWithFormat:@http://example.com/add_videoxml.php];
networkQueue = [[ASINetworkQueue alloc] init];
[networkQueue cancelAllOperations];
[networkQueue setShowAccurateProgress:YES];
// [networkQueue setUploadProgressDelegate:progressBar];
[networkQueue setDelegate:self];
[networkQueue setRequestDidFinishSelector:@selector(requestFinished :)];
[networkQueue setRequestDidFailSelector:@selector(requestFailed :)];
request = [[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString:url]];
[request setPostValue:@284forKey:@id];
[request setPostValue:@showforKey:@show];
[request addRequestHeader:@Content-Type
value:@multipart / form-data; boundary = ---------------- ----------- 1842378953296356978857151853\" ];
NSData * imgData = UIImageJPEGRepresentation(userImage,0.9);
if(imgData!= nil){
[request setFile:imgData withFileName:@LoveatnightandContentType:@image / jpegforKey:@image];
}
// [请求addRequestHeader:@Content-Type
// value:@multipart / form-data; boundary = ------- -------------------- 1842378953296356978857151853\" ];
$ b if(videoData!= nil){
[request setFile:videoData withFileName:@LoveishardandContentType:@image / jpegforKey:@ 上传文件];
} //错误出现在这一行
[request setTimeOutSeconds:500];
// NSLog(@%@,request);
[networkQueue addOperation:request];
[networkQueue go];
由OP添加
[请求setFile:videoData withFileName:@Loveishard
andContentType:@video / quicktime
forKey:@uploadfile];
我使用这个,因为我的视频合成器是mov,但是它又给出错误
$ div class =h2_lin>解决方案
- (void)uploadeVideoClicked {
if(_picker){
[_picker dismissModalViewControllerAnimated:NO];
[_picker.view removeFromSuperview];
[_picker release];
if(_popover){
[_popover dismissPopoverAnimated:NO];
[_popover release];
}
_picker = [[[UIImagePickerController alloc] init] retain];
_picker.delegate = self;
_picker.editing = NO;
_picker.allowsEditing = NO;
_picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
_picker.wantsFullScreenLayout = YES;
_picker.videoQuality = UIImagePickerControllerQualityTypeLow;
_picker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie];
_popover = [[[UIPopoverController alloc] initWithContentViewController:_picker] retain];
[_popover setDelegate:self];
[_popover presentPopoverFromRect:infoButton.frame
inView:self.view
allowedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
#pragma mark -----------------------------
#pragma mark图像选择器委托方法
$ b - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString * mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if([mediaType isEqualToString:@public.image]){
UIAlertView * myAlertView = [[UIAlertView alloc] initWithTitle:@message:@您选择一张图片选择电影委托:自我cancelButtonTitle:@确定otherButtonTitles:无];
[myAlertView show];
[myAlertView发行];
else if([mediaType isEqualToString:@public.movie]){
NSURL * videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
// NSLog(@找到一个视频);
if(webData){
[webData release];
webData = nil;
}
webData = [[NSMutableData alloc] initWithContentsOfURL:videoURL];
// webData = [NSData dataWithContentsOfURL:videoURL];
spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
spinner.center = self.view.center;
[self.view addSubview:spinner];
[spinner startAnimating];
[self performSelector:@selector(uploadVideo)withObject:nil afterDelay:.001];
}
[_picker dismissModalViewControllerAnimated:YES];
[_picker.view removeFromSuperview];
[_picker release];
_picker = nil;
[_popover dismissPopoverAnimated:YES];
[_popover release];
$ b - (void)uploadVideo
{
NSString * url = [NSString stringWithFormat:@http://www.example.com /uploadvideoxml.php];
networkQueue = [[ASINetworkQueue alloc] init];
[networkQueue cancelAllOperations];
[networkQueue setShowAccurateProgress:YES];
[videoUploadProgressView setHidden:NO];
progressView.center = self.view.center;
[self.view addSubview:progressView];
[networkQueue setUploadProgressDelegate:videoUploadProgressView];
[networkQueue setDelegate:self];
[networkQueue setRequestDidFinishSelector:@selector(requestFinished :)];
[networkQueue setRequestDidFailSelector:@selector(requestFailed :)];
request = [[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString:url]];
[request setPostValue:[[mAppDelegate.userInfoArray objectAtIndex:1] valueForKey:@user_id] forKey:@user_id];
[request addRequestHeader:@Content-Type
value:@multipart / form-data; boundary = -------------------- ------- 1842378953296356978857151853\" ];
NSDate * date1 = [NSDate date];
NSDateFormatter * formatter1 = [[NSDateFormatter alloc] init];
[formatter1 setDateFormat:@hh:mm];
NSString * valuestr = [formatter1 stringFromDate:date1];
//// NSLog(@%@,valuestr);
[formatter1 release];
NSString * moviename = [NSString stringWithFormat:@WakeUUUP_%d _%@。mov,[videolistArray count],valuestr];
if(webData!= nil){
[request setFile:webData withFileName:moviename andContentType:@video / quicktimeforKey:@userfile];
}
[request setTimeOutSeconds:5000];
// NSLog(@%@,request);
[networkQueue addOperation:request];
[networkQueue go];
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[_picker dismissModalViewControllerAnimated:YES];
[_picker.view removeFromSuperview];
[_picker release];
_picker = nil;
[_popover dismissPopoverAnimated:YES];
[_popover release];
}
//用于Ipad UIPopoverController如果在用户点击弹出窗口之外时有取消
- (void)popoverControllerDidDismissPopover :( UIPopoverController *)popoverController
{
[_picker dismissModalViewControllerAnimated:YES];
[_picker.view removeFromSuperview];
[_picker release];
_picker = nil;
}
#pragma标记-------------------------
#pragma标记ASIHTTPREQUEST委托
- (void)requestFailed:(ASIHTTPRequest *)req
{
[progressView removeFromSuperview];
[videoUploadProgressView setHidden:YES];
//// NSLog(@Request failed:%@,[req error]);
UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@Failed to Post Item消息:[[req error] description] delegate:self cancelButtonTitle:@OKotherButtonTitles:nil,nil];
[errorAlert show];
[errorAlert发行];
[networkQueue发行];
[请求发布];
- (void)requestFinished:(ASIHTTPRequest *)req
{
[networkQueue release];
[请求发布];
[progressView removeFromSuperview];
[videoUploadProgressView setHidden:YES];
[[Parsing sharedInstance] assignSender:self];
NSMutableArray * resultArray = [[[NSMutableArray alloc] initWithArray:[[Parsing sharedInstance] startparsingforfun:[req responseData]]] autorelease];
NSLog(@响应是:%@,resultArray);
if(spinner){
[spinner stopAnimating];
[spinner removeFromSuperview];
[spinner release];
spinner = nil;
if([[[resultArray objectAtIndex:1] objectForKey:@Transaction] isEqualToString:@uploadvideoxml]){
if([[[resultArray objectAtIndex:1] objectForKey :@success] isEqualToString:@true]){
[self viewWillAppear:YES];
$ b $ else b
UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@无法更新配置文件消息:nil委托:自动cancelButtonTitle:@确定otherButtonTitles :无,无];
[errorAlert show];
[errorAlert发行];
$ b在此输入代码
I want to post one image to my webservice and one video too , but problem is that when it go to video part it give me Excess-bad Error
NSString *url = [NSString stringWithFormat:@"http://example.com/add_videoxml.php"];
networkQueue = [[ASINetworkQueue alloc] init];
[networkQueue cancelAllOperations];
[networkQueue setShowAccurateProgress:YES];
//[networkQueue setUploadProgressDelegate:progressBar];
[networkQueue setDelegate:self];
[networkQueue setRequestDidFinishSelector:@selector(requestFinished:)];
[networkQueue setRequestDidFailSelector: @selector(requestFailed:)];
request= [[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString:url]] ;
[request setPostValue:@"284" forKey:@"id"];
[request setPostValue:@"show" forKey:@"show"];
[request addRequestHeader:@"Content-Type"
value:@"multipart/form-data;boundary=---------------------------1842378953296356978857151853"];
NSData *imgData=UIImageJPEGRepresentation(userImage, 0.9);
if(imgData != nil){
[request setFile:imgData withFileName:@"Loveatnight" andContentType:@"image/jpeg" forKey:@"image"];
}
//[request addRequestHeader:@"Content-Type"
// value:@"multipart/form-data;boundary=---------------------------1842378953296356978857151853"];
if(videoData != nil){
[request setFile:videoData withFileName:@"Loveishard" andContentType:@"image/jpeg" forKey:@"uploadfile"];
}// error is come on that line
[request setTimeOutSeconds:500];
//NSLog(@"%@",request);
[networkQueue addOperation:request];
[networkQueue go];
Added by the OP
[request setFile:videoData withFileName:@"Loveishard"
andContentType:@"video/quicktime"
forKey:@"uploadfile"];
i use this becuase my video formate is mov , but it again give error
解决方案
-(void)uploadeVideoClicked{
if (_picker) {
[_picker dismissModalViewControllerAnimated:NO];
[_picker.view removeFromSuperview];
[_picker release];
}
if (_popover) {
[_popover dismissPopoverAnimated:NO];
[_popover release];
}
_picker = [[[UIImagePickerController alloc] init] retain];
_picker.delegate = self;
_picker.editing = NO;
_picker.allowsEditing=NO;
_picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
_picker.wantsFullScreenLayout = YES;
_picker.videoQuality =UIImagePickerControllerQualityTypeLow;
_picker.mediaTypes =[NSArray arrayWithObject:(NSString *)kUTTypeMovie];
_popover = [[[UIPopoverController alloc] initWithContentViewController:_picker] retain];
[_popover setDelegate:self];
[_popover presentPopoverFromRect:infoButton.frame
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
#pragma mark -----------------------------
#pragma mark Image Picker Delegate Methods
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:@"public.image"]){
UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"" message:@"You Select a image Please select Movie" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[myAlertView show];
[myAlertView release];
}
else if ([mediaType isEqualToString:@"public.movie"]){
NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
//NSLog(@"found a video");
if (webData) {
[webData release];
webData = nil;
}
webData = [[NSMutableData alloc]initWithContentsOfURL:videoURL];
// webData = [NSData dataWithContentsOfURL:videoURL];
spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
spinner.center = self.view.center;
[self.view addSubview:spinner];
[spinner startAnimating];
[self performSelector:@selector(uploadVideo) withObject:nil afterDelay:.001];
}
[_picker dismissModalViewControllerAnimated:YES];
[_picker.view removeFromSuperview];
[_picker release];
_picker = nil;
[_popover dismissPopoverAnimated:YES];
[_popover release];
}
-(void)uploadVideo
{
NSString *url = [NSString stringWithFormat:@"http://www.example.com/uploadvideoxml.php"];
networkQueue = [[ASINetworkQueue alloc] init];
[networkQueue cancelAllOperations];
[networkQueue setShowAccurateProgress:YES];
[videoUploadProgressView setHidden:NO];
progressView.center = self.view.center;
[self.view addSubview:progressView];
[networkQueue setUploadProgressDelegate:videoUploadProgressView];
[networkQueue setDelegate:self];
[networkQueue setRequestDidFinishSelector:@selector(requestFinished:)];
[networkQueue setRequestDidFailSelector: @selector(requestFailed:)];
request= [[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString:url]] ;
[request setPostValue:[[mAppDelegate.userInfoArray objectAtIndex:1]valueForKey:@"user_id"] forKey:@"user_id"];
[request addRequestHeader:@"Content-Type"
value:@"multipart/form-data;boundary=---------------------------1842378953296356978857151853"];
NSDate *date1=[NSDate date];
NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init];
[formatter1 setDateFormat:@"hh:mm"];
NSString *valuestr = [formatter1 stringFromDate:date1];
////NSLog(@"%@",valuestr);
[formatter1 release];
NSString *moviename = [NSString stringWithFormat:@"WakeUUUP_%d_%@.mov",[videolistArray count],valuestr];
if(webData != nil){
[request setFile:webData withFileName:moviename andContentType:@"video/quicktime" forKey:@"userfile"];
}
[request setTimeOutSeconds:5000];
//NSLog(@"%@",request);
[networkQueue addOperation:request];
[networkQueue go];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[_picker dismissModalViewControllerAnimated:YES];
[_picker.view removeFromSuperview];
[_picker release];
_picker = nil;
[_popover dismissPopoverAnimated:YES];
[_popover release];
}
//for Ipad UIPopoverController if there is a cancel when the user click outside the popover
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
[_picker dismissModalViewControllerAnimated:YES];
[_picker.view removeFromSuperview];
[_picker release];
_picker = nil;
}
#pragma mark -------------------------
#pragma mark ASIHTTPREQUEST Delegate
- (void)requestFailed:(ASIHTTPRequest *)req
{
[progressView removeFromSuperview];
[videoUploadProgressView setHidden:YES];
////NSLog(@"Request failed: %@",[req error]);
UIAlertView *errorAlert = [[UIAlertView alloc] initWithTitle:@"Failed to Post Item" message:[[req error] description] delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil, nil];
[errorAlert show];
[errorAlert release];
[networkQueue release];
[request release];
}
- (void)requestFinished:(ASIHTTPRequest *)req
{
[networkQueue release];
[request release];
[progressView removeFromSuperview];
[videoUploadProgressView setHidden:YES];
[[Parsing sharedInstance] assignSender:self];
NSMutableArray *resultArray =[[[NSMutableArray alloc]initWithArray:[[Parsing sharedInstance]startparsingforfun:[req responseData]]]autorelease];
NSLog(@"Response was: %@",resultArray);
if (spinner) {
[spinner stopAnimating];
[spinner removeFromSuperview];
[spinner release];
spinner = nil;
}
if ([[[resultArray objectAtIndex:1]objectForKey:@"Transaction"]isEqualToString:@"uploadvideoxml"]) {
if ([[[resultArray objectAtIndex:1]objectForKey:@"success"]isEqualToString:@"true"]) {
[self viewWillAppear:YES];
}else {
UIAlertView *errorAlert = [[UIAlertView alloc] initWithTitle:@"Failed to Update Profile" message:nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil, nil];
[errorAlert show];
[errorAlert release];
}
}
}
enter code here
这篇关于我们如何在ASIHTTPRequest中发布视频和图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文