Précédent   Forum des professionnels en informatique > PHP > Outils > EasyPHP
EasyPHP Forum d'entraide sur EasyPHP : installation, utilisation, etc. Avant de poster -> Cours EasyPHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/04/2007, 15h24   #1
Membre confirmé
 
Inscription : mai 2006
Messages : 372
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mai 2006
Messages : 372
Points : 234
Points : 234
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 :
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?
kahya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2007, 16h07   #2
Membre confirmé
 
Inscription : mai 2006
Messages : 372
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mai 2006
Messages : 372
Points : 234
Points : 234
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
kahya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2007, 16h19   #3
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
Pas la peine d'utiliser filesize, le tableau $_FILES contient déjà ce dont tu as besoin :
Code :
$_FILES['Fichier']['size']
ça te donne la taille en octets, voir la doc de php
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2007, 16h33   #4
Membre confirmé
 
Inscription : mai 2006
Messages : 372
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mai 2006
Messages : 372
Points : 234
Points : 234
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 ^^
kahya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2007, 16h43   #5
Membre confirmé
 
Inscription : mai 2006
Messages : 372
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mai 2006
Messages : 372
Points : 234
Points : 234
OK ça marche parfaitement merci beaucoup
kahya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2007, 16h46   #6
Membre émérite
 
Avatar de julien.63
 
Inscription : décembre 2005
Messages : 1 322
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 1 322
Points : 981
Points : 981
Envoyer un message via MSN à julien.63
Concernant le problème initial,
je crois qu'il faut indiquer le chemin complet qui pointe vers le fichier
Code :
filesize($tmpDir.'/'.$_FILES['Fichier']['tmp_name'])
mais bon, de toute façon la réponse de Hervé Saladin est préférable
julien.63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2007, 17h09   #7
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
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 :
<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
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h10.


 
 
 
 
Partenaires

Hébergement Web