2012-06-04 14 views
12

Spojrzałem na kilka przykładów, ale myślę, że mój problem może być w PHP. Próbuję przesłać obraz do serwera z iPhone za pomocą AFNetworking. Oto mój kod obj-c:AFNetworking Przesyłanie obrazu

-(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]; 
} 

To mój upload.php:

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; 

} 

Kiedy próbuję przesłać zawiedzie w

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

i zwraca 403/false kod statusu, który ustawiłem

+0

najprawdopodobniej problem uprawnienia. Włącz 'error_reporting (E_ALL)' –

+0

, ponieważ robię to za pomocą urządzenia z systemem iOS, w jaki sposób mogę przekazać komunikaty o błędach? Mam funkcję sendResponse ('400', "$ errors"), której mogę użyć, ale do czego mogę ustawić $ errors? – mkral

+0

@mkral: Wiem, że to trochę stare, ale próbowałem zaimplementować zmodyfikowaną wersję części ładującej kodu ur i nie zadziałało dla mnie czy to się udało na końcu? ps Próbuję się nauczyć ios/cel C –

Odpowiedz

3

To był głupi błąd ...

w php i potrzebne

$uploaddir = 'uploads/'; 

zamiast

$uploaddir = '/uploads/'; 
+0

Hej, użyłem twojego kodu, ale dostałem odpowiedź "[(null)]", czy możesz mi w tym pomóc? thanx – AliBZ

+0

, co najprawdopodobniej oznacza, że ​​dostaniesz błąd w swojej usłudze internetowej lub nie zwróci żadnego JSON – mkral

+0

Czy możesz przesłać mi część kodu do przesyłania? Szukałem działającego przykładu od dwóch dni. Thanx – AliBZ

Powiązane problemy