Rechercher : dans
Par :

[PHP] Upload pour un type de fichier ^^

Dernière réponse le 25 fév 2008 à 20:55:41 marina26, le 22 jan 2007 à 09:54:51 
 Signaler ce message aux modérateurs

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 :)
++

Configuration: Windows XP
Internet Explorer 6.0

1

kij_82, le 22 jan 2007 à 11:01:38

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. ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

2

marina26, le 22 jan 2007 à 11:08:15

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 ^^.

Répondre à marina26

3

marina26, le 22 jan 2007 à 11:19:13

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

Répondre à marina26

4

kij_82, le 22 jan 2007 à 11:19:35

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";

~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

5

marina26, le 22 jan 2007 à 11:24:03

Encore mieux Merci beaucoup.

^^

Décidement, on peut en fair des choses en php !!

Répondre à marina26

6

 komar_666, le 25 fév 2008 à 20:55:41

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';}................

++ ^^

Répondre à komar_666
Collection CommentÇaMarche.net