Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Upload de fichier avec formulaire PHP

2 réponses
Avatar
Donald Martel
Voici mon probleme,
J'ai un serveur Apache 2.0 avec PHP 4 et j'ai une section reservee dans mon
site (une page controlee par htaccess) ou je peux uploader par formulaire un
fichier...
J'utilise le code que l'on retouve un peu partout sur le web qui ressemble
a ca :


<title>Upload de fichier</title>

<form method='post' enctype='multipart/form-data'>
<h2>Entrez les informations ci-dessous avant de charger le fichier.</h2>
<br>

<table border='0' cellpadding='1' cellspacing='1' class='box'>
<tr>
<td>Nom du fichier :</td>
<td><input name='fname' size='40'></td>
<tr>
<td valign='top'>Decription du fichier :</td>
<td><textarea name='fdescript' cols='45' rows='4'></textarea></td>

<tr><td>Cat&eacute;gorie :</td>
<td><select name='fcategorie'>
<option value='Utilitaires'>Utilitaires</option>
<option value='Documentation'>Documentation</option>
<option value='Sécurité'>S&eacute;curit&eacute;</option>
<option value='Pilotes'>Pilotes</option>
<option value='Divers'>Divers</option>
</select>



<tr>
<td>Accessible par :</td>
<td><select name='ftechonly'>
<option value='0'>Clients & Techniciens</option>
<option value='1'>Techniciens seulement</option>
</select>

</td>


<tr>
<td>Emplacement du fichier...</td>
<td>
<input type='hidden' name='MAX_FILE_SIZE' value = '30000000'>
<input name='userfile' type='file' id='userfile' size='44'>
</td>
<tr><td>&nbsp;</td>
<tr>
<td colspan='2' align='center'><input name='upload' type='submit'
class='box' id='upload' value=' Lancer le upload '></td>
</tr>
</table>
</form>


include ("../includes/misc.inc.php"); // les para,eter de connexion de mon
serveur sont dans ce fichier //

$uploadDir='../download/';

if(isset($_POST['upload']))
{
$fileName=$_FILES['userfile']['name'];
$tmpName =$_FILES['userfile']['tmp_name'];
$fileSize=$_FILES['userfile']['size'];
$fileType=$_FILES['userfile']['type'];

$filePath=$uploadDir . $fileName;


$nomfichier=$_POST['fname'] ;
$descriptionfichier=$_POST['fdescript'];
$categoriefichier=$_POST['fcategorie'] ;
$vuefichier=$_POST['ftechonly'] ;

$result = move_uploaded_file($tmpName,$filePath);
if (!$result)
{
echo 'Error uploading file';
exit;
}

else
{
$requete="INSERT INTO upload
(fname,fpath,fsize,ftype,fdescript,fcategorie,ftechonly)" .
"VALUES
('$nomfichier','$filePath','$fileSize','$FileType','$descriptionfichier','$categoriefichier','$vuefichier')";

mysql_query($requete) or die('Probleme de base : '. $requete );



}
}

?>


la requete c<est pour ecrire dans une base MYSQL la description du fichier
et autre...

MON PROBLEME ---> c,est qu'aussitot que la taille de mon fichier depasse 1
Mo , je recois comme reponse de mon navigateur le message IMPOSSIBLE
D'AFFICHER LA PAGE... mais s'il est plus petit NO PROBLEMO !!!


dans mon PHP INI

les valeurs ressemblent a ceci :

memory_limit = 20M
max execution time 90
post_max_size = 32M
upload tmp dir /home/www/upload

Je ne sais plus ou chercher...

2 réponses

Avatar
P'tit Marcel
J'ai un serveur Apache 2.0 avec PHP 4 et j'ai une section reservee dans mon
site (une page controlee par htaccess) ou je peux uploader par formulaire un
fichier...



include ("../includes/misc.inc.php"); // les para,eter de connexion
de mon serveur sont dans ce fichier //


apparemment, le répertoire includes est dans l'arborescence accessible
du web. ça fait un peu passoire !


if(isset($_POST['upload']))
{


faudrait tester ici que $_FILES['userfile'] n'est pas empty

$fileName=$_FILES['userfile']['name'];




$requete="INSERT INTO upload
(fname,fpath,fsize,ftype,fdescript,fcategorie,ftechonly)" .
"VALUES
('$nomfichier','$filePath','$fileSize','$FileType','$descriptionfichier','$categoriefichier','$vuefichier')";


- et s'il y a des guillemets simples dans ces variables ?
- et si l'enregistrement existe déjà (car tu as bien sûr défini une clé
primaire pour cette table comme tout bon développeur :-) ?



mysql_query($requete) or die('Probleme de base : '. $requete );


c'est gentil d'afficher la requête à ton utilisateur pour qu'il sache
que tu as une table upload avec 7 champs. cela facilitera la tâche d'un
néfaste éventuel !


MON PROBLEME ---> c,est qu'aussitot que la taille de mon fichier depasse 1
Mo , je recois comme reponse de mon navigateur le message IMPOSSIBLE
D'AFFICHER LA PAGE... mais s'il est plus petit NO PROBLEMO !!!
dans mon PHP INI


cherche la valeur de upload_max_filesize
vérifie la place disponible sur le disque où est situé /home/www/upload
et ../download/


par ailleurs, avant de placer le fichier dans l'arborescence web,
vérifie que ce n'est pas un script (extension php? ou pl ou cgi ou ...,
liste à adapter en fonction de la configuration d'Apache)


eça
--
P'tit Marcel
stats sur les forums modérés http://www.centrale-lyon.org/ng/

Avatar
Decryptus
Regarde le max_input_time ;)