[PHP] Upload pour un type de fichier ^^

marina26 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
 komar_666 -
Bonjour a vous,
Voila je travail en ce moment pour un site professionnel et je suis embétée pour restreindre l'upload à un type de fichier.
voila j'ai ceci dans mon code

$type_file = $_FILES['fichier']['type'];

if( !strstr($type_file, 'RAR') )
{
exit("Le fichier ne correspond pas");
}

et a chaque foi que je prend un fichier .rar il m'affiche que le fichier ne correspond pas.
Pourtant pour une image jpeg ce code fonctionne !
Merci d'avance de bien vouloir me donner un petit coup de main.
Sinon bonne journée a vous :)
++
A voir également:

5 réponses

kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
C'est parce que strstr respecte la casse et tu as mis : "RAR" et non "rar", pour le coup ca ne fonctionne pas :)


Mais sinon je te conseil plutot de faire ainsi :
$tab = explode(".",$file);
if ( tab[1] && tab[1] != "rar" ){
     echo "Mauvais fichier";
}


car dans ton exemple si je met le fichier suivante : totorar ca passera alors que ca ne devrait pas.
0
marina26 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
flute, en faite j'avais essayé aussi de metre en minuscul mais même si j'écris :
if( !strstr($type_file, 'rar') )
{
exit("Le fichier ne correspond pas");
}

Il m'affice mon message d'erreur.
Peu être que le strstr ne prend pas en compte le rar ?

je vais regarder la seconde solution.
Merci beaucoup pour votre aide ^^.
-1
marina26 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Super merci beaucoup, tout fonctionne à merveille.
( petite parenthèse pour ceux qui débute comme moi, il faut rajouter les $ devant tab )
merci kij ralalala c'est super.

Bonne journée a tous.

Marina
-1
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
Le hic avec la solution que je t'ai proposé (elle fonctionne c'est pas le souvis) c'est que si tu as un fichier nommé de la facon suivante :
"bibi.tutu.rar"
le fichier ne passera pas la validation car tab[1] vaudra "tutu".

Donc petite modification si tu souhaite que ton script soit efficace un maximum, c'est non plus de faire le test sur tab[1] mais sur tab[taille].

Donc comme suit :
$tab = explode('.',$file_name);
$ext = "rar";
$size = count($tab);
if ( tab[size-1] && $tab[size-1] != $ext )
     echo "Mauvais fichier";

-1

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

Posez votre question
marina26 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Encore mieux Merci beaucoup.

^^

Décidement, on peut en fair des choses en php !!
-1
komar_666
 
Salut, j'ai eu le meme probleme que toi, et je viens de decouvrir que dans le $_FILES['upload']['type'] il n'y a pas de rar, pour un fichier rar! Heu oué chelou!!

Pour un fichier rar:
$_FILES['upload']['type'] == application/octet-stream (Ne contiens pas rar)
Donc si tu fais test sur les carateres "rar" ca ne peux pas marcher car ils n'y sont pas!

Pour un fichier zip:
$_FILES['upload']['type'] == application/x-zip-compressed (Contiens zip)
Dans ce cas la ca marche car zip y est!

J'ai donc modifier rar par -->stream

$type_file = $_FILES['upload']['type'];
{
if( !strstr($type_file, 'stream') && !strstr($type_file, 'zip'))
{$erreur = 'only type .rar ou .zip';}................

++ ^^
0