0

私は(最終的に)iOS プロジェクトに afnetworking を使用しています。POSTデータと画像をphpサーバーに送信することに成功しましたが、コードのブロックは分離されています。

データを送る:

NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys:myname,@"name", mysencondname, @"twoname", nil];

NSURL *url = [NSURL URLWithString:@"http://DOMAIN.COM"];

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
[httpClient defaultValueForHeader:@"Accept"];

[httpClient postPath:@"post.php" parameters:parameters
             success:^(AFHTTPRequestOperation *operation, id response) {
                        NSLog(@"operation hasAcceptableStatusCode: %d", [operation.response statusCode]);
                        [self requestDone:[operation.response statusCode]];
                     }
             failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                        NSLog(@"Error with request");
                        NSLog(@"%@",[error localizedDescription]);
                        [self requestFailed];
}];

画像を送る:

NSData *imageToUpload = UIImagePNGRepresentation(_imageView.image);
AFHTTPClient *client= [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://www.DOMAIN.com"]];

NSMutableURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:@"upload.php" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
    [formData appendPartWithFileData: imageToUpload name:@"avatar" fileName:fullFilename mimeType:@"image/png"];
}];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSString *response = [operation responseString];
    NSLog(@"response: [%@]",response);
    [MBProgressHUD hideHUDForView:self.view animated:YES];
    [self dismissViewControllerAnimated:YES completion:NULL];

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    if([operation.response statusCode] == 403){
        NSLog(@"Upload Failed");
        [MBProgressHUD hideHUDForView:self.view animated:YES];
        return;
    }
    NSLog(@"error: %@", [operation error]);

}];

myname, @"name", mysencondname, @"twoname"私の質問は、単一のリクエストでサーバーに画像と () のようなデータを送信できるように、それらをどのように組み合わせることができるかということです。

4

1 に答える 1

2

multipartFormRequestWithMethodメソッド内には、パラメーターと呼ばれるパラメーターがあり、データを送信するために使用できます。

例えば:

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
                            myName, @"name"
                            , secondName, @"twoname"
                            , nil];

NSMutableURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:@"upload.php" parameters:params constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
    [formData appendPartWithFileData: imageToUpload name:@"avatar" fileName:fullFilename mimeType:@"image/png"];
}];
于 2013-06-28T13:52:45.190 に答える