2012-05-10 4 views
0

(ヌル)、このようなコードでは存在しません:asiformdatarequestアップロード画像はありませんが、ファイルは私が画像をアップロードするためのフレームワークをasiformdatarequest使う

私のログは
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); 
    NSString *path1=[paths objectAtIndex:0]; 
    NSString *filename=[path1 stringByAppendingPathComponent:@"logo.png"]; 
    NSLog(@"image path = %@",filename); 
    [request setFile:[NSURL URLWithString:filename] forKey:@"avatar"]; 
    [request startSynchronous]; 

image path = /Users/tanlusheng/Library/Application Support/iPhone Simulator/5.1/Applications/5473E6FF-0D3A-48CD-8728-0219CF25BC80/Documents/logo.png 
Error Domain=ASIHTTPRequestErrorDomain Code=6 "No file exists at (null)" UserInfo=0x6b4c610 {NSLocalizedDescription=No file exists at (null)} 

私は1つの画像内に追加されました私のproject.butなぜファイルを見つけることができません?私はシミュレータで実行されます。

+0

パスの試行 - NSString *ファイル名= [[NSBundle mainBundle] pathForResource:@ "logo" ofType:@ "png"] – rishi

+0

あなたのコードを試しましたが、 "No file exists exists(null)" – Tan

答えて

0

イメージを送信しようとすると、メインバンドルではなく、アプリケーションのDocumentsディレクトリからイメージを送信しようとしています。明示的に画像をDocumentsディレクトリ(コードで行う可能性が高い)に配置していない限り、そこには表示されません。

代わりにこれを試してみてください:

NSString *filename = [[NSBundle mainBundle] pathForResource:@"logo" ofType:@"png"]; 
[request setFile:[NSURL URLWithString:filename] forKey:@"avatar"]; 
[request setDelegate:self]; //Make sure this class receives request alerts 
[request setDidFinishSelector:@selector(someMethod:)]; //Which method to call when finished 
[request startAsynchronous]; 

注意を私はまた、非同期的に開始する要求を変更しました。あなたは本当に同期してアップロードしたくない場合や、リクエストが終了するまでアプリの実行が停止されます。また、リクエストの終了時に自己委任とセレクタを追加しました。

はその後、ここに完成したクエリを処理することができます:あなたはまだヌルエラーが発生する場合

- (void)someMethod:(ASIHTTPRequest *)request 
{ 
    NSString *response = [request responseString]; 
    NSLog(@"%@", response); 
} 

は、その後、画像がターゲット会員を持っていることを確認してください。これを行うには、Xcodeで画像を選択し、右のTarget Membershipの下に小さなボックスが表示されていることを確認します。これにより、画像がアプリケーションの一部であることが保証されます。

関連する問題