When I was calling my service method which is using codeiginiter upload script from server, it returns error "Disallowed Key Characters". Actually in my case send (null) to the service. So, I add two special characters ( ) in _clean_input_keys function of codeiginiter.
Let say,
BASE_URL = http://localhost:8888 SERVICE_PATH = /test_upload/upload.php YOUR_FILE_NAME = test.png
FORM_POST_NAME_VALUE = profile_image
This form post name value should be same on both client and server side. It will identify your post value. (i.e profile_image will accept your post body)
iPhone Code :
CodeIginiter Script:
This form post name value should be same on both client and server side. It will identify your post value. (i.e profile_image will accept your post body)
iPhone Code :
NSData *imageData = UIImagePNGRepresentation(YOUR_IMAGE_VIEW);
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"BASE_URL"]];
NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"SERVICE_PATH" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
[formData appendPartWithFileData:imageData name:@"FORM_POST_NAME_VALUE" fileName:@"YOUR_FILE_NAME" mimeType:@"image/png"];
}];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSString *result = [operation responseString];
NSLog(@"response: [%@]",result);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
if([operation.response statusCode] == 403){
NSLog(@"Upload Failed");
return;
}
NSLog(@"error: %@", [operation error]);
}];
[operation setUploadProgressBlock:^(NSInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
//float width = totalBytesWritten / totalBytesExpectedToWrite;
}];
[operation start];
In my case $str having (null), so I add this 2 special characters. If you are having another special characters, please add them in below function as regular expression.CodeIginiter Script:
function _clean_input_keys($str){
if ( ! preg_match("/^[a-z0-9:_\(\)\/-]+$/i", $str)){
exit('Disallowed Key Characters.');
}
return $str;
}
Cheers !!
Dude Indent your code!!
ReplyDeleteThanks for the advice!
Delete