0

iPhone アプリケーションで ASIFormDataRequest を使用して、録画したばかりのビデオを、ビデオの所有者を識別するために使用できる文字列と共にサーバーに送信しようとしています。そのためのコードは次のとおりです。

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    NSURL *urlvideo = [info objectForKey:UIImagePickerControllerMediaURL];
    NSString *urlString=[urlvideo path];
    NSLog(@"urlString=%@",urlString);
    NSString *str = [NSString stringWithFormat:@"http://www.mysite.com/videodata.php"];
    NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    NSData *patientData = [_patientCode dataUsingEncoding:NSUTF8StringEncoding];
    [request setFile:urlString forKey:@"video"];
    [request setData:patientData forKey:@"patientcode"];
    [request setRequestMethod:@"POST"];
    [request setDelegate:self];
    [request startSynchronous];
    NSLog(@"responseStatusCode: %i",[request responseStatusCode]);
    NSLog(@"responseString: %@",[request responseString]);
    [picker dismissViewControllerAnimated:YES completion:nil];
}

すべてが正しく機能しているように見えます。ステータス コード 200 が返され、メソッドは期待どおりに終了します。ただし、サーバー上のphpファイルは何も受信していないようです。サーバー側の php コードに次の行を追加しました。

echo(count($_POST));

これは 0 を返すため、実際には ASIFormDataRequest によって何もポストされていないように見えます。以前に ASIFormDataRequest を使用したことがないため、見逃している簡単な手順があるように感じますが、どんな助けでも大歓迎です。

編集: に変更したsetData:patientDataところsetPostValue:_patientCode、投稿のその部分が正しく送信されるようになったので、機能しているように見えますsetPostValuesetData、機能setFileしていないようです。

4

2 に答える 2

0

他の何かを読んでいて、彼らが何か面白いことをしたことに気づいたときに、答えを見つけることになりました。私がアップロードしたファイルは、$_FILES配列ではなく、単に配列に入っていました$_POST。また、必要に応じて配列に表示されるように変更[request setData:patientData forKey:@"patientcode"];したので、送信していた文字列とphpスクリプトで送信していたファイルの両方を取得できました。[request setPostValue:_patientCode forKey:@"patientCode"];$_POST

于 2013-06-19T16:31:03.590 に答える