Bonjour,
J'aimerai récupérer une image postée sur un formulaire dans un fichier ouvert avec ajax. Cepedant, 'avatar' n'est pas défini dans le fichier ajax. Pouvez vous m'aidez s'il vous plait ?
<html>
<head>
<title>Test images</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js" type="text/javascript"></script>
</head>
<body>
<form method="post" action="resultats.php" onsubmit="return valider()" id="formulaire_test" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
<input type="file" name="avatar" id="avatar"/>
<p></br></p>
<input type="submit" value="valider" />
</form>
</body>
<script type="text/javascript">
function valider()
{
$.ajax(
{
url: 'ajaximage.php',
type: 'POST',
success: function(data)
{
if(data=="ok")
{
alert('ca marche');
var valider=true;
}
else
{
var valider=false;
alert('Veuillez vérifier la taille, l\'extension et le poids de l\'image');
}
}
});
return valider;
}
</script>
</html>
Ici, le fichier ajaximage.php
<?php
//Vérification de l'extension
$extensions_valides = array( 'png' );
$extension_upload = strtolower( substr( strrchr($_FILES'avatar']'name'], '.') ,1) );
if ( in_array($extension_upload,$extensions_valides) )
{
$exten=true;
}
else
{
$exten=false;
}
//Vérification de la taille
$image_sizes = getimagesize($_FILES'avatar']'tmp_name']);
if ($image_sizes[0] == 50 AND $image_sizes[1] == 50)
{
$taille=true;
}
else
{
$taille=false;
}
if($taille AND $exten)
{
echo "ok";
}
else
{
echo "pas ok";
}
?>
Merci de votre aide
Bonjour,
je pense dans un premier temps que tu ne passes rien dans les données POST.
Peux-tu faire un var_dump($_POST); die(); coté php?
et un console.log(data); dans le retour js ?
Par ailleurs , attention au header pour l'envoi de fichier... En ajax j'avais mis en place un upload de fichier il y a quelques temps.. mes souvenirs étant ancien.. je t'invite à rechercher sur Internet.
Cordialement
Antho
Il n'est pas possible de transférer des fichiers en ajax (enfin du moins pas simplement comme on peut le faire avec les autres inputs).
Si tu veux absolument le faire, regarde du coté des hacks de ce style: http://blueimp.github.io/jQuery-File-Upload/