Vérifier Taille et Mime Type d'un Upload

Résolu
tuxboy Messages postés 995 Date d'inscription   Statut Membre Dernière intervention   -  
 fubar -
Bonsoir,

Je voudrais savoir quel est le moyen le plus simple en PHP pour vérifier dans un formulaire la taille maximale pour uploader uniquement des .DOC (et rejeter tout autre type) ?

Avec un grand merci par avance à tous ceux qui m'aiguilleront vers une fonction optimisée et simple à mettre en place.
A voir également:

2 réponses

tatsuyad Messages postés 75 Date d'inscription   Statut Membre Dernière intervention  
 
Si tu es l'administrateur de serveur qui traite la requete http de client, pourquoi pas inserer le code .js suivant et avertir l'utilisateur de l'erreur ?

Bonne chance.
  • le code .js


<script language='JavaScript'>
function checkFileSize(inputFile) {
var max = 3 * 512 * 512;
if (inputFile.files && inputFile.files[0].size > max) {
alert("File too large.");
inputFile.value = null;
}
}
</script>
  • le code .html


<input type="file" name="inputFile" />
1
fubar
 
C'est pas sérieux comme réponse j'espère... niveau sécurité c'est une catastrophe. La personne mal intentionné désactive le JS et peux uploader tout et n'importe quoi, de n'importe quelle taille du moment que ça passe aux niveau des limitations serveur. A la limite ça peut juste aider l'utilisateur pour la validation du formulaire pour éviter d'avoir à rafraîchir la page et à perdre les données entrées. Sinon, voilà typiquement un exemple de comment ne pas utiliser le JS. Pour l'OP, il faut regarder du coté de la configuration dans le php.ini avec les options upload_max_filesize et post_max_size. Pour le types des fichiers, il faut regarder le MIME type avec l'objet PHP finfo ou les fonctions fileinfo.
0
Utilisateur anonyme
 
Voilà, je présente aussi une solution, mais cette fois au niveau de php.
En souhaitant que ça aide un peu! ;)

if($_FILES['upload']['size'] > 209715200){
	//Taille maximale dépassée.
	}

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$finfo = finfo_file($finfo, $_FILES['upload']['tmp_name']);
finfo_close($finfo);
//Bon, ici tu as un array parce que j'acceptais
//plusieurs mime types, maintenant tu en fais
//ce que tu veux! o=
if (!in_array($finfo, array(
	'application/msword'))) {
		//Format invalide.
		}
0
tuxboy Messages postés 995 Date d'inscription   Statut Membre Dernière intervention   190
 
Merci, en effet, côté format accepté, je me suis tourné vers un :
<input type="file" accept=".DOC,.doc">
0
Utilisateur anonyme
 
ouais, mais fais attention! un utilisateur mal intentionné peut bien modifier ça par accept=".php".
0