Upload de fichiers .doc, .jpg ...
clR
-
mr05j Messages postés 343 Statut Membre -
mr05j Messages postés 343 Statut Membre -
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.
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:
- Upload de fichiers .doc, .jpg ...
- Fichier .doc - Guide
- Comment ouvrir un fichier doc ? - Guide
- Upload video youtube - Télécharger - Diffusion
- Explorateur de fichiers - Guide
- Renommer des fichiers en masse - Guide
8 réponses
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 :
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'];
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 !
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 !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
@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.
Ce n'est pas un problème de chmod si ça fonctionne avec certains fichiers et pas d'autres.
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
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.