2012-06-04 16 views
12

Ich habe mir ein paar Beispiele angesehen, aber ich denke, dass mein Problem in PHP sein kann. Ich versuche, ein Bild von einem iPhone auf einen Server mit AFNetworking hochzuladen. Hier ist mein obj-c-Code:AFNetworking Hochladen Bild

-(IBAction)uploadButtonClicked:(id)sender 
{ 

NSData *imageToUpload = UIImageJPEGRepresentation(mainImageView.image, 90); 
AFHTTPClient *client= [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://www.THESERVER.com"]]; 

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

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

}]; 

[operation start]; 
} 

Das ist mein upload.php ist:

function upload(){ 
    $uploaddir = '/uploads/'; 
    $file = basename($_FILES['file']['name']); 
    $uploadfile = $uploaddir . $file; 

    if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) { 
     sendResponse(200, 'Upload Successful'); 
     return true; 
    } 
    sendResponse(403, 'Upload Failed'); 
     return false; 

} 

Wenn ich versuche, es zu laden versagt bei

if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) { 

und gibt die 403/false Statuscode, den ich gesetzt habe

+0

wahrscheinlich ein Berechtigungsproblem. Aktivieren Sie 'error_reporting (E_ALL)' –

+0

seit ich dies über iOS-Gerät mache, wie kann ich die Fehlermeldungen zurückgeben? Ich habe eine Funktion sendResponse ('400', "$ errors"), die ich benutzen kann, aber wofür setze ich $ errors? – mkral

+0

@mkral: Ich weiß, das ist ein bisschen alt, aber ich habe versucht, eine modifizierte Version des Uploads Teil von ur-Code und es funktioniert nicht für mich hat es funktioniert für Sie am Ende? ps im versuchen, ios/objective C –

Antwort

3

Es war ein dummer Fehler ...

i

in PHP benötigt

$uploaddir = 'uploads/'; 

statt

$uploaddir = '/uploads/'; 
+0

Hey Mann, ich habe Ihren Code verwendet, aber ich bekam" Antwort: [(null)] ", könnten Sie mir dabei helfen? thanx – AliBZ

+0

das bedeutet wahrscheinlich, dass Sie einen Fehler in Ihrem Web-Service erhalten oder es keine JSON zurückgibt – mkral

+0

Ist es möglich, mir den Upload-Teil Ihres Codes zu senden? Ich habe in den letzten zwei Tagen nach einem Arbeitsbeispiel gesucht. Danke – AliBZ