|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Inscription : mai 2006 Messages : 372 ![]() |
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) 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? |
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Inscription : mai 2006 Messages : 372 ![]() |
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 |
|
|
00
|
|
|
#3 |
|
Membre chevronné
![]() Développeur Web Inscription : décembre 2004 Messages : 636 ![]() |
Pas la peine d'utiliser filesize, le tableau $_FILES contient déjà ce dont tu as besoin :
ça te donne la taille en octets, voir la doc de php
__________________
Ne cliquez pas sur ce lien |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Inscription : mai 2006 Messages : 372 ![]() |
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 ^^
|
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Inscription : mai 2006 Messages : 372 ![]() |
OK ça marche parfaitement merci beaucoup
|
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() |
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']) |
|
|
00
|
|
|
#7 |
|
Membre chevronné
![]() Développeur Web Inscription : décembre 2004 Messages : 636 ![]() |
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' />
__________________
Ne cliquez pas sur ce lien |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com