我正在使用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] Error: NSInvalidArgumentException
从我在网上找到的许多文档和示例中,这应该可行,但事实并非如此,正如您可以看到的那样。熨烫时有任何帮助吗?如果您需要任何其他信息,我很乐意发布。
答案 0 :(得分: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建议并使用调试器确切地确定导致异常的行