[Upload] PB avec is_uploaded_file
Bonjour,
je rencontre un probléme avec is_uploaded_file(), elle me retourne false lorsque que le fichier depasse une certaine taille. J'ai lu un topic concernant ce probléme mais je ne parvient pas a trouver le beug. (http://www.developpez.net/forums/sho...d.php?t=272398)
La variable max_allowed_packed a été modifié a 70M dans my.ini.
J'ai aussi modifié upload_max_filesize à 70M ainsi que post_max_size dans php.ini.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| <HTML>
<HEAD></HEAD>
<BODY>
<H2><center><u>AJOUTER UN DOCUMENT ARCHIVE</u></center></H2>
<?php
include ("transfertArchive.php");
if ( isset($_FILES['fic']) )
{
transfertArchive($_FILES);
}
include ("connexion.php");
// On indique que l'on va envoyer des donnees grace au formulaire ci-dessous
echo "<form enctype=multipart/form-data action=# method=post>";
$ReqSql = "SELECT * FROM type_archive";
$ReqSql = mysql_query($ReqSql) or die("Erreur SQL : <br>".$ReqSql);
echo "<b>Type de document Archivé : </b>";
$_POST['motcle'];
$_POST['resume'];
$_POST['rangee'];
$_POST['date'];
$_POST['cd'];
$_POST['type'];
// On alimente la liste deroulante des types
echo "<SELECT name=type>";
echo "<option>".$_POST['type']."</option>";
while($val=mysql_fetch_array($ReqSql)) {
echo "<option>".$val['libelle_archive']."</option>\n";
}
echo "</SELECT>";
// On alimente la liste deroulante des allées
$ReqSql = "SELECT * FROM allee_archive";
$ReqSql = mysql_query($ReqSql) or die("Erreur SQL : <br>".$ReqSql);
echo "<br><br><b>Allee : </b>";
// On alimente la liste deroulante des types
echo "<SELECT name=allee>";
echo "<option>".$_POST['allee']."</option>";
while($val=mysql_fetch_array($ReqSql)) {
echo "<option>".$val['libelle_allee']."</option>\n";
}
echo "</SELECT>";
// **** Formulaire invisible permmettant de fixer la taille max du fichier
echo "<input type=hidden name=MAX_FILE_SIZE value=250000000 />";
echo "<BR><br><b>Etagére :</b>";
echo "<input type=text size=5 name=etagere value=".$_POST['etagere']."><BR>";
echo "<BR><b>Rangée :</b>";
echo "<input type=text size=5 name=rangee value=".$_POST['rangee']."><BR>";
echo "<BR><b>Date d'archivage numérique :</b>";
echo "<input type=text size=10 name=date value=".$_POST['date']."><BR>";
echo "<BR><b>Numéro de CD :</b>";
echo "<input type=text size=5 name=cd value=".$_POST['cd']."><BR><br>";
echo "<br><b>Veuillez saisir un ou plusieurs mot(s) clé(s) (10 MOTS AU MAXIMUM) permettant de rechercher ce document : </b>";
echo "<br><b>Les mot clés seront séparés par des points virgules (;) : </b><br>";
echo "<input type=text size=60 name=motcle value=".$_POST['motcle']."><BR><br>";
echo "<br><b>Saisissez un court resumé de ce document : </b>";
echo "<BR><TEXTAREA name=resume rows=4 cols=60>".$_POST['resume']."</TEXTAREA><BR>";
?>
<br><b>Selectionner le fichier a enregister : </b><br>
<!-- Pemet de selectionner un fichier par l'intermediaire d'une fenetre : "Parcourir..." -->
<input type="file" name="fic" size=25 /><br><br>
<center><input type="submit" value="Valider">
<input type="reset" value="Annuler"></center>
</FORM>
</BODY>
</HTML> |
fonction transfertArchive() :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
<?php
ini_set('memory_limit', 8000000); // en octets
set_time_limit(600); // en secondes
// Fonction pour stocker le fichier
function transfertArchive($FILE)
{
include ("connexion.php");
$description=@$_POST['motcle'];
$resume=@$_POST['resume'];
$allee=@$_POST['allee'];
$etagere=@$_POST['etagere'];
$rangee=@$_POST['rangee'];
$date=@$_POST['date'];
$cd=@$_POST['cd'];
$type=@$_POST['type'];
if($type==null)
{
echo "<SCRIPT LANGUAGE=JavaScript>";
echo "alert('Erreur, le type de document n\'est pas renseigné !')";
echo "</SCRIPT>";
return false;
}
if($description==null)
{
echo "<SCRIPT LANGUAGE=JavaScript>";
echo "alert('Erreur, les mots clés n\'ont pas été remplis !')";
echo "</SCRIPT>";
return false;
}
if($resume==null)
{
echo "<SCRIPT LANGUAGE=JavaScript>";
echo "alert('Erreur, le résumé n\'est pas remplis correctement !')";
echo "</SCRIPT>";
return false;
}
$ret = false;
$fic_blob = '';
$fic = 0;
$fic_type = '';
$fic_nom = '';
$taille_max = 70000000;
$ret = is_uploaded_file ($_FILES['fic']['tmp_name']);
if ( !$ret )
{
echo "<SCRIPT LANGUAGE=JavaScript>";
echo "alert('Erreur, aucun fichier selectionné !')";
echo "</SCRIPT>";
return false;
}
else
{
// Le fichier a bien été reçu
$fic_taille = $_FILES['fic']['size'];
// On test la taille du fichier
if ( $fic_taille > $taille_max )
{
echo "Trop gros !";
return false;
}
// On recup le type de fichier
$fic_type = $_FILES['fic']['type'];
// On recup le nom du fichier
$fic_nom = $_FILES['fic']['name'];
// On test si le fichier est deja present dans la BDD par rapport au nom
$req = "SELECT fic_nom FROM document_doc_archive;";
$req = mysql_query ($req) or die (mysql_error ());
while($val=mysql_fetch_array($req)) {
if($val['fic_nom']==$fic_nom){
echo "<SCRIPT LANGUAGE=JavaScript>";
echo "alert('Erreur, le nom de ce fichier est deja present dans la base !')";
echo "</SCRIPT>";
return false;
}
}
// On recup le dernier identifiant du document
$req = "SELECT max(id_doc) FROM document_doc_archive;";
$req = mysql_query ($req) or die (mysql_error ());
$max=mysql_fetch_array($req);
if($max['max(id_doc)']==null)
$max=1;
else
$max=$max['max(id_doc)']+1;
//On recup le id_acte corresopndant au type de document
$req= "SELECT id_archive FROM type_archive WHERE libelle_archive='".$type."';";
$req = mysql_query ($req) or die (mysql_error ());
$numArchive=mysql_fetch_array($req);
/**** $_FILES['fic']['tmp_name']
***** permet de recup temporairement le fichier dans
***** un repertoire sur le server
***** On ne peut passer le contenu d'un fichier dans une variable
***** On utilise FILE_GET_CONTENTS
****/
$fic_blob = file_get_contents ($_FILES['fic']['tmp_name']);
//On change le format de la date en YYYY-MM-JJ
list($jours, $mois, $an) = split("[-./]",$date);
$date=$an."-".$mois."-".$jours;
$req = "INSERT INTO document_doc_archive VALUES(".
$max.", '".
$fic_nom."', '".
$fic_taille."', '".
$fic_type."', '".
addslashes ($fic_blob)."','".
$description."', '".
$resume."', '".
$allee."', '".
$etagere."', '".
$rangee."', '".
$date."', '".
$cd."', '".
$numArchive['id_archive'].
"');";
$ret = mysql_query ($req) or die (mysql_error ());
echo "<SCRIPT LANGUAGE=JavaScript>";
echo "alert('Opération réussi, ducument enregistré !')";
echo "</SCRIPT>";
return true;
}
}
?> |
Merci de votre aide !