AFNetworking Upload image von iOS-API

Ich habe Probleme beim hochladen eines Bildes mit Daten. Dieser code ermöglicht es mir, Daten hoch zu laden, einfach gut:

    NSURL *url = [NSURL URLWithString:@"my_base_url"];
AFHTTPClient *client = [[AFHTTPClient alloc]initWithBaseURL:url];

//depending on what kind of response you expect.. change it if you expect XML
[client registerHTTPOperationClass:[AFJSONRequestOperation class]];

NSDictionary *params = [[NSDictionary alloc]initWithObjectsAndKeys:
                        _topicText.text,@"Topic",
                        @"1",@"Category",
                        @"",@"MainMedia",
                        @"1",@"Creator",
                        nil];
[client postPath:@"apidebate/debates" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
    //

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"failure");
}];

Jedoch, ich habe erfolglos versucht, ein Bild hochzuladen mit diesen Daten:

    NSURL *url = [NSURL URLWithString:@"my_base_url"];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"MainMedia"], 0.5);
NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"/upload" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
    [formData appendPartWithFileData:imageData name:@"MainMedia" fileName:@"MainMedia" mimeType:@"image/jpeg"];
}];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setUploadProgressBlock:^(NSInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
    NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
}];
[operation start];

Was in der Arbeit könnte ich falsch gemacht??

Bearbeiten (hinzufügen von server-code)

Den back-end-Codeigniter ist mit dem REST-client-Phil Sturgeon gebaut (große Bibliothek, btw). Ich bin mir fast sicher, dass es nicht der server-code, aber, wie die erste Zeile dieser Methode sendet mir eine E-Mail. Wenn ich versuchen, mit dem oben genannten code, um Bilder posten, die E-Mail nie kommt. So, es scheint, es ist nt immer noch der Endpunkt.

//CONTROLLER FROM API
function debates_post()
{
    mail('[email protected]', 'Test', 'Posted');
    $tmp_dir = "images/posted/";

    if(isset($_FILES['MainMedia'])){
        $SaniFileName = preg_replace('/[^a-zA-Z0-9-_\.]/','', basename($_FILES['MainMedia']['name']));

        $file = $tmp_dir . $SaniFileName;
        move_uploaded_file($_FILES['MainMedia']['tmp_name'], $file);
    }
    else
        $SaniFileName = NULL;

    $data = array('Topic'=>$this->post('Topic'), 'MainMedia'=>$this->post('MainMedia'), 'Category'=>$this->post('Category'), 'Creator'=>$this->post('Creator'));
    $insert = $this->debate->post_debate($this->post('Topic'), $SaniFileName, $this->post('Category'), $this->post('Creator'));
    if($insert){
        $message = $this->db->insert_id();
    }
    else{
        $message = 'Insert failed';
    }

    $this->response($message, 200);
}

//MODEL
function post_debate($Topic=NULL, $MainMedia='', $Category=NULL, $Creator=NULL){
    $MainMedia = ($MainMedia)?$MainMedia:'';
    $data = array(
                    'Topic' => $Topic,
                    'MainMedia' => $MainMedia,
                    'Category' => $Category,
                    'Creator' => $Creator,
                    'Created' => date('Y-m-d h:i:s')
                );
    return $this->db->insert('debate_table', $data);
}
  • versuchen [httpClient enqueueHTTPRequestOperation:operation] statt [operation start]
  • ok, also, ich habe dies getan, und das Ergebnis ist das gleiche: Die Daten zu sein scheint, hochgeladen von der app (ich bin in der Lage, den Zugriff auf die totalBytesWritten in der setUploadProgressBlock), aber es scheint nie zu schlagen mein Ende Punkt. Dieser geht es die zweite Möglichkeit, die ich aufgezählt habe, versuchen, das Bild hochzuladen. Der Endpunkt ist richtig, da bin ich in der Lage, es zu schlagen, wenn Sie nicht versuchen, ein Bild hochzuladen. Hilfe?
  • Das problem scheint zu sein auf dem server. Kannst du die relevanten server-code?
InformationsquelleAutor d2burke | 2012-08-20
Schreibe einen Kommentar