我们如何在ASIHTTPRequest中发布视频和图像? [英] How we Can post Video and Image in ASIHTTPRequest?

查看:194
本文介绍了我们如何在ASIHTTPRequest中发布视频和图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

$ p



















$ 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.movi​​e]){

NSURL * videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
// NSLog(@找到一个视频);
if(webData){
[webData release];
webData = nil;
}
webData = [[NSMutableData alloc] initWithContentsOfURL:videoURL];
// webData = [NSData dataWithContentsOfURL:videoURL];
spinner = [[UIActivityIndi​​catorView alloc] initWithActivityIndi​​catorStyle:UIActivityIndi​​catorViewStyleGray];
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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆