IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Problème avec filesize() [EasyPHP]


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Par défaut Problème avec filesize()
    Bonjour! j'ai un formulaire qui permet d'uploader des fichiers sur le server. Pour limiter leur taille je fais appel a la fonction filesize comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (filesize($_FILES['Fichier']['tmp_name']) > $taille_max)
    ( $taille_max est initialisée à 100000)
    En local avec EasyPhp tout marche bien, mais sur le server de l'entreprise ça me met une erreur :

    Warning: filesize() [function.filesize]: Stat failed for C:\WINDOWS\TEMP\php1FD7.tmp (errno=2 - No such file or directory) in D:\...\Demande.php on line 124

    Pourtant le fichier est bien uploadé là ou il faut... Je suppose que le controle de la taille n'est pas effectué. Coment résoudre le probleme?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Par défaut
    En fait je pense que le probleme vien du fait que le fichier que l'on envoi ne se trouve pas sur le serveur, et filesize semble le chercher sur le server.
    Si je fais un echo de $_FILES['Fichier']['tmp_name'] ça me renvoi le chemin du fichier mais sur le poste où il se trouve... Il manque donc une partie au chemin que je passe en parametre pour filesize(). Mais je ne vois pas coment determiner le poste d'ou j'envoi ce fichier afin de completer ce chemin.
    Autre chose, je m'etais deja servi de cette fonction, mon site est chez un hebergeur (donc distant) et la fonction marche tres bien... Je suis perdue

  3. #3
    Membre émérite Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Par défaut
    Pas la peine d'utiliser filesize, le tableau $_FILES contient déjà ce dont tu as besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_FILES['Fichier']['size']
    ça te donne la taille en octets, voir la doc de php

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Par défaut
    erf... bon j'avai trouvé une solution intermediaire : rapatrier le fichier et faire le controle apres, et si il est trop gros l'effacer, mais je vais tester ta solution ça va limiter les flux merci ^^

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Par défaut
    OK ça marche parfaitement merci beaucoup

  6. #6
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    Concernant le problème initial,
    je crois qu'il faut indiquer le chemin complet qui pointe vers le fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filesize($tmpDir.'/'.$_FILES['Fichier']['tmp_name'])
    mais bon, de toute façon la réponse de Hervé Saladin est préférable

  7. #7
    Membre émérite Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Par défaut
    En relisant tes question et ta derniere remarque, j'ai la vague impression que tu te trompes un peu :
    que tu utilises $_FILES['Fichier']['size'], ou alors filesize() ne change rien aux flux, car quand tu testes la taille du fichier, celui-ci est déjà uploadé sur le serveur.
    Il n'existe aucun moyen de connaitre la taille du fichier AVANT qu'il n'ait été uploadé, c.à.D. quand il est encore sur le poste client.
    Si tu veux faire de la limitation sur la taille des fichiers, ce n'est pas avec du code qu'il faut le faire, mais au niveau de la configuration du serveur, ça se passe dans le php.ini paramètre upload_max_filesize
    En jouant sur ce paramètre, tu empèches purement et simplement les clients d'envoyer des fichiers trop gros.
    La bonne chose à faire, est d'utiliser ce paramètre de conf, mais aussi d'informer textuellement l'utilisateur de la limite, et enfin d'utiliser dans le formulaire un champ caché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='hidden' name = 'MAX_FILE_SIZE' value = '30000' />
    Ce champ caché permet un blocage par le navigateur des trops gros fichiers avant qu'il ne soient envoyés, mais malheureusement ça n'a qu'un rôle ergonomique et ce n'est pas fiable pour la sécurité du serveur, d'ou l'importance du param de conf de php.ini

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo