2012-06-04 21 views
12

He visto algunos ejemplos pero creo que mi problema puede estar en PHP. Estoy tratando de cargar una imagen a un servidor desde el iphone usando AFNetworking. Aquí está mi código obj-c:AFNetworking Uploading Image

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

Ésta es mi 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; 

} 

Cuando intento cargar falla en

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

y devuelve el 403/falso código de estado que establecí

+0

más probable es un problema de permisos. Habilite 'error_reporting (E_ALL)' –

+0

ya que estoy haciendo esto a través del dispositivo iOS ¿cómo puedo devolver los mensajes de error? Tengo una función sendResponse ('400', "$ errors") que puedo usar, pero ¿a qué le pongo $ errors? – mkral

+0

@mkral: sé que esto es un poco viejo, pero traté de implementar una versión modificada de la parte de carga del código de ur y no funcionó para mí ¿funcionó para ti al final? ps Estoy tratando de aprender ios/objetivo C –

Respuesta

3

Fue un error tonto ...

en php que necesitaba

$uploaddir = 'uploads/'; 

en lugar de

$uploaddir = '/uploads/'; 
+0

hey man, utilicé su código pero recibí una" respuesta: [(nulo)] ", ¿podría ayudarme con eso? thanx – AliBZ

+0

que probablemente significa que está recibiendo un error en su servicio web o no está devolviendo ningún JSON – mkral

+0

¿Es posible enviarme la parte de carga de su código? He estado buscando un ejemplo de trabajo en los últimos dos días. Gracias – AliBZ