Envoie de fichier en $_FILE avec variable $_POST
Bonjour,
Voila maintenant plusieurs jour que j'essaye d'envoyer sur un serveur un fichier pour le réceptionner en $_file sur une page php le truc c'est que j'ai besoin d'envoyer sur la meme requête des variable POST par exemple $_POST j'ai chercher et rechercher je suis tomber sur pas mal de truc mais aucun ne passe mon fichier n'arrive pas comme il faut j'ai essayer plusieurs type de requête j'ai essayer avec la lib AFNetworking mais rien ne passe elle me fait toujours l'erreur
Error: 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=0x15570690 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set., NSUnderlyingError=0x15669880 "Request failed: bad request (400)"}
Je ne sait plus quoi faire j'ai regarder avec Wireshark et il me passe bien mes variable en POST le fichier aussi visiblement mais je n'arrive pas a s'avoir pourquoi ca fonctionne pas
Je vous présente ma requete AFNetworking au cas ou
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
NSString *urlString = @"http://82.225.159.39/easyform/gestionadmin/rest/sendFiles/";
NSString *positionFile = [self writeToTextFile:form];
NSData *jsonData = [[NSFileManager defaultManager] contentsAtPath: positionFile];
[manager POST:urlString parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:jsonData name:@json_file fileName:@json_file mimeType:@application/octet-stream];
[formData appendPartWithFormData:[[[NSUserDefaults standardUserDefaults] stringForKey:@currentUserName] dataUsingEncoding:NSUTF8StringEncoding] name:@login];
[formData appendPartWithFormData:[[[NSUserDefaults standardUserDefaults] stringForKey:@currentUserPwd] dataUsingEncoding:NSUTF8StringEncoding] name:@pwd];
[formData appendPartWithFormData:[cmpId dataUsingEncoding:NSUTF8StringEncoding] name:@idcmp];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@Response: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@Error: %@", error);
NSLog(@OURA);
}];
return (YES);
Voila si vous avez des idée je suis preneur
Merci d'avance Cordialement
Réponses
Regarde le résultat de la requête (dans AFHTTPRequestOperation, tu peux accéder à la NSURLHTTPResponse).
Ok du coup j'ai ajouter
Pour lui faire comprendre que je reçois pas en JSON mais en brut et la il me donne une autre erreur --"
Alors visiblement c'est equivalent a une erreur 500
vous connaissez pas un moyen de choper la requête dans un fichier externe ?
Ou si non si vous s'avez comment je pourrais faire ma requete sans passer par afNetworking je suis preneur
Là c'est clairement pas AFNetworking ou Alamofire le problème, c'est ton serveur qui te rend une erreur 400.
Ouais alors j'ai fait une nouvelle requête maintenant il me renvoie plus d"erreur Mais parcequ'il y a en a toujours un bas le fichier apparait pas
1) A quoi ça sert de faire "dataWithData:jsonData" plutôt que de passer directement jsonData ?
2) As-tu vérifier que jsonData n'était pas nil ?
3) Quelle tête a ton HTTPBody à la fin ? (Tu peux l'afficher via NSLog en le reconvertissant en NSString au préalable pour qu'il soit + lisible, ou regarder la tête de la requête dans Wireshark ou autre)
Merci de répondre premierement ensuite
1) je suis obliger d'envoyer un fichier text dans le quelle il y a le json c'est pour un site qui n'est pas a moi il posède déjà une application android qui fonctionne selon ce shéma donc impossible de faire des modification.
2) oui j'ai vérifier mon jsonData il n'est pas a null
3) wireshark me montre bien le fichier (je peut le lire d'ailleur) et me découpe bien toute les variable POST une a une.
Heu... premièrement j'ai répondu justement ? C'est bizarre ton ton, là ???
et deuxièmement, je ne vois pas le rapport. Je me demandais pourquoi tu fais [NSData dataWithData:jsonData] alors que jsonData est déjà un NSData ? Les méthodes dataWithData:, stringWithString: arrayWithArray: etc ne sont en général jamais utiles, puisque ça construit un data/string/array à partir d'un truc qui est déjà un data/string/array, donc autant utiliser l'objet directement.
Je vois pas le rapport avec ce dont tu parles, que le site n'est pas à toi et qu'il possède déjà une appli android et tout ?! Là je ne te parles même pas du WebServices, je te parle de ton code o_O
Alors j'ai trouver enfin la solution je la met sur le site afin que ci une personne cherche la même chose que moi elle puisse tomber dessus
Et avec AFNetworking tu n'as pas réussi ?
eu il ma prit la tete alors je l'est virée