File upload 使用ASIHTTPRequest上传照片

File upload 使用ASIHTTPRequest上传照片,file-upload,ios5,asihttprequest,File Upload,Ios5,Asihttprequest,我正在使用ASIHTTPRequest用PHP上传一张照片。PHP端已经被证明是可以工作的(我在android上使用它),我正在尝试让iOS组件工作 这是我的上传: NSString *myurl = @"http://mydomain.tld/php/upload.php?casenum="; myurl = [myurl stringByAppendingFormat: casenumber]; NSString *fixedURL = [myurl stringByAddi

我正在使用ASIHTTPRequest用PHP上传一张照片。PHP端已经被证明是可以工作的(我在android上使用它),我正在尝试让iOS组件工作

这是我的上传:

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]错误:NSInvalidArgumentException


从我在网上找到的许多文档和示例来看,这应该是可行的,但事实并非如此,正如您看到的例外。有人帮我熨一下这些纽结吗?如果您需要任何其他信息,我很乐意发布。

在生成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];
NSURL *url = [NSURL urlWithString:myurl];
NSData *imageData = UIImageJPEGRepresentation(image1.image, 0.9);
其次,您尝试将NSString分配给NSURL,因此

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

NSString *myurl = @"http://mydomain.tld/php/upload.php?casenum=";
NSString *escapedCasenumber = [casenumber stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
myurl = [myurl stringByAppendingFormat:escapedCasenumber];
NSURL *url = [NSURL urlWithString:myurl];
NSData *imageData = UIImageJPEGRepresentation(image1.image, 0.9);
最后,传递给
uiimagejpegresentation
的第二个参数应该是介于0.0和1.0之间的浮点值,所以我猜

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

NSString *myurl = @"http://mydomain.tld/php/upload.php?casenum=";
NSString *escapedCasenumber = [casenumber stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
myurl = [myurl stringByAppendingFormat:escapedCasenumber];
NSURL *url = [NSURL urlWithString:myurl];
NSData *imageData = UIImageJPEGRepresentation(image1.image, 0.9);

如果在这些更改之后仍然不起作用,那么按照Joseph的建议执行,并使用调试器准确地识别导致异常的行

设置调试器在异常时停止,它停止的位置应该让您知道哪个参数无效。