Vérifier Taille et Mime Type d'un Upload

Résolu/Fermé
tuxboy Messages postés 994 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 mai 2019 - 29 oct. 2015 à 23:51
 fubar - 2 nov. 2015 à 22:05
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.

2 réponses

tatsuyad Messages postés 74 Date d'inscription mercredi 3 juin 2015 Statut Membre Dernière intervention 3 avril 2016
Modifié par tatsuyad le 30/10/2015 à 08:30
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
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
30 oct. 2015 à 20:16
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 994 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 mai 2019 189
30 oct. 2015 à 22:45
Merci, en effet, côté format accepté, je me suis tourné vers un :
<input type="file" accept=".DOC,.doc">
0
Utilisateur anonyme
1 nov. 2015 à 20:17
ouais, mais fais attention! un utilisateur mal intentionné peut bien modifier ça par accept=".php".
0