Upload de fichiers .doc, .jpg ...

Fermé
clR - 9 nov. 2010 à 11:48
mr05j Messages postés 295 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 11 mars 2011 - 11 nov. 2010 à 20:48
Bonjour,

J'essaie de créer un formulaire d'upload de divers types de fichiers. mais l'upload ne fonctionne pas pour tous les types de fichiers... il marche par exemple pour les .docx et .xlsx, mais pas pour les .xls et .doc ...??? (je ne peux pas tester les .pps car je n'en ai pas, alors si une bonne ame peut tester ça pour moi...)

je débute juste et j'aimerais savoir ce que vous en pensez aussi de ce petit bout de code. J'ai besoin de tant de conseils...

Aussi, je souhaiterais limiter la taille des fichiers uploadés à 8Mo... mais je n'arrive pas à appliquer ça pour mon script alors je n'ai rien mit pour l'instant. Si qq'1 à une solution....

Merci d'avance pour vos remarques et votre aide.

<?php

if( isset($_POST['upload']) ) // si formulaire soumis
{
    $content_dir = 'uploads/'; // dossier où sera déplacé le fichier

    $tmp_file = $_FILES['fichier']['tmp_name'];

    if( !is_uploaded_file($tmp_file) )
    {
        exit("Le fichier est introuvable");
    }

    // on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];
	//iges
    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif')  && !strstr($type_file, 'png')
	//docs bureautique
	&& !strstr($type_file, 'doc')&& !strstr($type_file, 'docx') && !strstr($type_file, 'xls') && !strstr($type_file, 'xlsx') && !strstr($type_file, 'pdf') && !strstr($type_file, 'pps'))
    {
        exit("Le type de fichier n'est pas autorisé pour l'upload.<br/><br/>Types autorisés pour l'upload d'images : .jpg, .jpeg, .bmp, .gif, .png ;<br/>Types autorisés pour l'upload de documents numériques : .doc, .docx, .xls, .xlsx, .pdf, .pps ;");
    }

    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['fichier']['name'];

    if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) )
	{
		exit("Nom de fichier non valide");
	}
	else if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
	{
		exit("Impossible de copier le fichier dans $content_dir");
	}

    echo "Le fichier a bien été uploadé";
}

?>

<form method="post" enctype="multipart/form-data" action="upload.php">
<p>
<input type="file" name="fichier" size="30">
<input type="submit" name="upload" value="Uploader">
</p>
</form>
A voir également:

8 réponses

avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
9 nov. 2010 à 17:39
Salut.

Pour la vérification de l'extension, je te conseille d'utiliser une liste (un tableau).
Et tu peux utiliser la fonction in_array($ext_fichier, $extensions) pour vérifier si $ext_fichier est dans l'array $extensions.

Pour récupérer l'extension seule :
$infos = pathinfo($_FILES['fichier']['tmp_name']);
$ext_fichier = $infos['extension'];
1
j'essaie ça dès que possible.
merci de ta réponse.

Je ne trouve rien sur le web au sujet d'upload de fichiers type doc ou xls... on propose des tutoriaux (nombreux) sur l'upload d'images mais pour le reste, pas évident d'obtenir des pistes...

Suffit-il de ne plus contrôler les extensions du tout pour pouvoir télécharger tous les types de fichiers? ou est-ce une faille de sécurité trop importante ?

si quelqu'un avait des pistes à me soumettre... Merci encore
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
9 nov. 2010 à 18:59
Fichier doc, xls, zip, jpg, png, exe, php, etc : la méthode est la même.
Il suffit de contrôler l'extension, et pour encore plus de sécurité, le type MIME.

« Suffit-il de ne plus contrôler les extensions du tout pour pouvoir télécharger tous les types de fichiers? ou est-ce une faille de sécurité trop importante ? »
Ce n'est pas vraiment une faille, mais c'est désagréable d'avoir des fichiers inutiles qui prennent de la place sur le FTP. Puis si ton but est d'afficher le fichier avec <img />, il faut quand même vérifier que ce soit une image ... Et si tes internautes peuvent télécharger (dans le sens ton site -> leur PC) les fichiers uploadés (téléchargement dans le sens PC -> Ton site), et que des personnes mal intentionnées ont placés des .exe contenant des virus, il y aura un problème de sécurité sur ton site.
0
d'ac.

Je vais voir pour le type MIME, car je n'y connais pas grand chose, mais si tout marche comme pour les images, j'ai du mal à comprendre pourquoi mes docs ".doc" ne s'uploadent pas comme prévu, ni comme le font les autres... M'enfin... je regarde ça au plus vite avec tes conseils.

merci !
0
mr05j Messages postés 295 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 11 mars 2011 22
9 nov. 2010 à 23:31
pathinfo();
recupéres des info sur les fichier ç ça ? les gens
0
mr05j Messages postés 295 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 11 mars 2011 22
Modifié par mr05j le 9/11/2010 à 23:32
OUH noublier pas le
CHMOD ça vas marcher
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
9 nov. 2010 à 23:45
@mr05j: oui, pathinfo() retourne un array contenant différentes informations sur un chemin. Par contre, je me suis trompé, c'est $_FILES['...']['name'] et pas $_FILES['...']['tmp_name'].
Ce n'est pas un problème de chmod si ça fonctionne avec certains fichiers et pas d'autres.
0
mr05j Messages postés 295 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 11 mars 2011 22
10 nov. 2010 à 13:07
oui mais LE CHMOD aussi peut te créer un petit probléme il bien le dire non
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
10 nov. 2010 à 13:45
Oui, mais ici, ce n'est pas ça car ça fonctionne avec certains fichiers.
Si ça serait un problème de chmod, ça serait tous les types de fichiers.
0
mr05j Messages postés 295 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 11 mars 2011 22
11 nov. 2010 à 20:48
oui
0