Uploader une image sur un serveur
RafaJackson
Membre
Bonjour à tous,
je développe actuellement une application iOS qui permet entre autre d'envoyer une image sur un serveur. J'ai donc pour cela recours à AFNetworking.
Je récupère soit de la librairie photo, soit de l'appareil un photo pour l'envoyer sur un serveur.
Voici mon code iOS :
NSData *imageData = UIImageJPEGRepresentation(imageAUpload, 90);
AFHTTPRequestSerializer *serializer = [AFHTTPRequestSerializer serializer];
NSDictionary *parameters = @{@Pseudo: PseudoUtilisateur};
NSError *__autoreleasing* error;
NSMutableURLRequest *request = [serializer multipartFormRequestWithMethod:@POST URLString:@http://blablabla.com/uploader.php parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:imageData
name:@userfile
fileName:@image.jpg
mimeType:@image/jpg];
} error:(NSError *__autoreleasing *)error];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
AFHTTPRequestOperation *operation =
[manager HTTPRequestOperationWithRequest:request
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@Success %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@Failure %@", error.description);
}];
operation.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@application/json];
[operation start];
Voici mon code PHP :
<?php
$uploaddir = './'; //Uploading to same directory as PHP file
$file = basename($_FILES['userfile']['name']);
$uploadFile = $file;
$randomNumber = rand(0, 99999);
$newName = $uploadDir . $randomNumber . $uploadFile;
if (is_uploaded_file($_FILES['userfile']['tmp_name']))
{
echo json_encode("Fichier uploadé");
}
else
{
echo json_encode("Fichier non uploadé");
}
if ($_FILES['userfile']['size']> 300000)
{
echo json_encode("Votre fichier est trop lourd.");
}
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $newName))
{
echo json_encode ("Fichier déplacé dans répertoire avec succès.") ;
}
?>
Voici l'erreur que l'on m'affiche :
Failure Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn't be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x8ed3f00 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}
J'avais déjà essayé à l'aide des NSURLConnection mais rien ne se passe.
Merci d'avance
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Désolé de mon ignorance
Mais comment est-ce que je fais je n'arrive pas à afficher le contenu brut renvoyé par le serveur
De plus si tu avais mis ta question dans le bon forum au lieu de la mettre n'importe où tu aurais sans doute + de chances d'avoir des réponses... j'ai déplacé ton post mais la prochaine fois fait un peu attention
Personnellement j'utilise un soft "Charles proxy" qui permet de "traquer" les requêtes réseaux, c'est un logiciel assez connu, il t'affiche les données envoyée et reçu par ton mac. Par défaut il marche avec le simulateur évidemment mais y a moyen de paramétrer le proxy de tes device pour qu'ils passent pas le logiciel.
Ce logiciel est payant (quelque chose comme 50euro il me semble) sinon tu as une version d'évaluation qui coupe toutes les 30 min et qui met quelque chose comme 10 seconde pour démarrer. Personnellement je l'ai acheter ça fait un peu de frais mais je trouve ça vraiment pratique.
Bon courage pour la suite.