2012-01-17 12 views
0

私はASIHTTPRequestを使用してPHPで写真をアップロードしています。 PHPの側面は動作することが証明されています(私はアンドロイド用に使用しています)、iOSコンポーネントを動作させようとしています。インターネット上でこれを発見し、私はそれを実行すると、それは私がオンライン見つけたドキュメントとサンプルの多くからエラー2012-01-17 10:52:16.939 MyApp[30373:707] Error: NSInvalidArgumentException写真を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]; 

アイブ氏:ここ

は私のアップロードですこれはうまくいくはずですが、例外でわかるように、そうではありません。キンクを洗い流すのに何か助けてください?他の情報が必要な場合は、喜んで投稿します。

+0

例外で停止するようにデバッガを設定します。 – JosephH

答えて

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]; 

第二に、あなたはその後、NSURLにNSStringのを代入しようと、そう

ていなければなりません
NSURL *url = [NSString stringWithFormat:@"%@",fixedURL]; 

でなければなりません

NSURL *url = [NSURL urlWithString:myurl]; 

最後に、第2引数は、0.0と1.0の間の浮動小数点値でなければなりませんUIImageJPEGRepresentationに渡されたので、私はそれはまだこれらの後に動作しない場合

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

をする必要があります

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

を推測しています変更があった場合は、JosephHが示唆しているようにデバッガを使用して、例外の原因となっている行を正確に特定します。