2012-01-17 156 views
0

我使用ASIHTTPRequest使用PHP上传照片。 PHP方面已经证明可以工作(我正在使用它的android),我试图让iOS组件工作。使用ASIHTTPRequest上传照片

这是我上传:

NSString *myurl = @"http://mydomain.tld/php/upload.php?casenum="; 
    myurl = [myurl stringByAppendingFormat: casenumber]; 
    NSString *fixedURL = [myurl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    NSURL *url = [NSString stringWithFormat:@"%@",fixedURL]; 

    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 

    NSData *imageData = UIImageJPEGRepresentation(image1.image, 90); 
    [request setData:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"file"]; 

    [request setCompletionBlock:^{ 
     NSString *responseString = [request responseString]; 
     NSLog(@"Response: %@", responseString); 
    }]; 
    [request setFailedBlock:^{ 
     NSError *error = [request error]; 
     NSLog(@"Error: %@", error.localizedDescription); 
    }]; 

    [request startAsynchronous]; 

伊夫发现这个在互联网上,当我运行它,它失败,出现错误2012-01-17 10:52:16.939 MyApp[30373:707] Error: NSInvalidArgumentException

从很多,我在网上找到的文档和示例,这应该起作用,但它不是,正如你可以看到的例外。任何帮助消除扭结?如果您需要其他信息,我很乐意发布。

+0

设置调试器停止异常,它停止的位置应该让你知道哪个参数是无效的。 – JosephH 2012-01-17 20:17:26

回答

0

在制作NSURL的过程中会出现一些错误。首先,它是只需要转义的参数,而不是整个URL,这样

NSString *myurl = @"http://mydomain.tld/php/upload.php?casenum="; 
myurl = [myurl stringByAppendingFormat: casenumber]; 
NSString *fixedURL = [myurl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

应该

NSString *myurl = @"http://mydomain.tld/php/upload.php?casenum="; 
NSString *escapedCasenumber = [casenumber stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
myurl = [myurl stringByAppendingFormat:escapedCasenumber]; 

其次,你再尝试一个NSString分配给NSURL,所以

NSURL *url = [NSString stringWithFormat:@"%@",fixedURL]; 

应该

NSURL *url = [NSURL urlWithString:myurl]; 

最后,第二个参数传递给UIImageJPEGRepresentation应该是在0.0和1.0之间的浮动值,所以我猜

NSData *imageData = UIImageJPEGRepresentation(image1.image, 90); 

应该

NSData *imageData = UIImageJPEGRepresentation(image1.image, 0.9); 

如果仍然无法正常后,这些工作然后按照JosephH的建议,使用调试器来确定哪一行导致异常。