Bonjour,
Je voudrais savoir s'il est possible de poster un fichier json, afin de recuperer le contenu en php et d'effectuer le traitement?
Cordialement
Oui c'est possible, alors tu as:
$_FILES['fichier_json']['tmp_name']
ces deux fonctions permettent de récupérer le chemin temporaire du fichier uploadé et avec:
file_get_contents()
json_decode()
tu peux récupérer le contenu du fichier et décoder le json, en gros ça donne ça:
$json = file_get_contents($_FILES['file']['tmp_name']);
$content = json_decode($json); // json_decode($json, true) => retourne des tableaux, sinon c'est un object
var_dump($content);
si tu utilise Slim ou Symfony ou un framework qui utilise RequestInterface (psr-7) tu as ceci pour récupérer le fichier
$files = $request->getUploadedFiles();
$json = file_get_content($file['tmp_name'])
// le reste c'est comme au-dessus
je te conseillerai de le laisser sous forme d'object, je trouve ça plus pratique car tu as juste a faire:
$var = $content->var;
pour le code du formulaire:
<form action="upload.php" method="post" enctype="multipart/form-data">
Fichier Json
<input type="fichier_json" name="file" id="fichier_json">
<input type="submit" value="Envoyer" name="envoyer">
</form>
Voilà en espérant t'avoir aidé :)
Bonjour Manghao, ta réponse est largement satisfaisante. Grace à tes explications, j'ai pu parser mon json et pouvoir faire le traitement adéquate.
Si je peux juste abuser, je suis en train d'accentuer mon apprentissage sur de l'ajax, et je voulais savoir si il etait possible d'envoyer ce fichier en ajax?
Cordialement
Alors avec ajax, c'est possible, pour le JS c'est comme ceci :
$('#formulaire').on('submit', function(e) {
e.preventDefault()
var pr = $.ajax($(this).attr('action'), {
type: $(this).attr('method'),
contentType: false,
processData: false,
context: $(this),
dataType: 'JSON', // Retour de la fonction d'upload en jSON, mais c'est pas obligé
data: $(this).serialize()
})
pr.done(function(response) {
alert(response)
})
pr.fail(function(response, status, error) {
alert('Une erreur est survenue au moment de l\'upload')
})
return false
})
et le fomulaire est le même, il faut juste lui donner un id
<form id="formulaire" action="upload.php" method="post" enctype="multipart/form-data">
Fichier Json
<input type="file" name="fichier_json" id="fichier_json">
<input type="submit" value="Envoyer" name="envoyer">
</form>