Enregistrement fichier sur FTP

Fermé
mocoye Messages postés 76 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 28 septembre 2023 - 11 août 2016 à 09:04
mocoye Messages postés 76 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 28 septembre 2023 - 3 oct. 2016 à 18:15
Bonjour,

J'ai crée un formulaire pour permettre le téléchargement d'un fichier et d'une image, j'ai bien autorisé l'écriture, la lecture et l'exécution dans le dossier dans mon serveur FTP (Filezila), mais il n'y a que l'image et qui s'enregistre dans le dossier.

J'ai le même formulaire pour une autre rubrique où la il n'y a qu'un fichier, et ça ne fonctionne pas non plus.

voici le code du formulaire :

<form action="ajout_gp2.php" id="form" method="post" enctype="multipart/form-data" >
<table>
<tr>
<td width="119" class="tit_champ">NOM :</td>
<td width="423"><input name="nom" type="text" id="nom" class="txt_champ" /></td>
</tr>
<tr>
<td width="119" class="tit_champ">FICHIER* :</td>
<td class="champfichier"><input type="hidden" name="MAX_FILE_SIZE" value="10000000"><input name="fichier_gp" type="file" /></td>
</tr>
<tr>
<td width="119" class="tit_champ">IMAGE** :</td>
<td class="champfichier"><input type="hidden" name="MAX_FILE_SIZE2" value="100000"><input name="image_gp" type="file" /></td>
</tr>
<tr>
<td width="119" class="tit_champ">ACTIF</td>
<td class="champfichier"><input name="actif" type="checkbox" id="actif" /></td>
</tr>
<tr>
<td> </td>
<td><input name="envoyer" type="image" src="design/envoyer.png" value="envoyer" /></td>
</tr>
</table>
</form>


et voici le code pour le traitement :


<?php include("include/bdd.inc.php"); ?>
<?php
function filter($in) {
$search = array ('@[éèêëÊË]@i','@[àâäÂÄ]@i','@[îïÎÏ]@i','@[ûùüÛÜ]@i','@[ôöÔÖ]@i','@[ç]@i','@[ ]@','@[\']@');
$replace = array ('e','a','i','u','o','c','_','');
return preg_replace($search, $replace, $in);
}
$nom=htmlspecialchars($_POST["nom"]);
if(isset($_POST["actif"])){
echo $actif=1 ;
} else {
echo $actif=0;
}

if(isset($_FILES['fichier_gp'])){

$dossier = 'ressources/guides_pratiques/';
$fichier_gp = basename($_FILES['fichier_gp']['name']);
$taille_maxi = 10000000;
$taille = filesize($_FILES['fichier_gp']['tmp_name']);
$extensions = array('.pdf');
$extension = strrchr($_FILES['fichier_gp']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type pdf...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier_gp = strtr($fichier_gp,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier_gp = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier_gp);
if(move_uploaded_file($_FILES['fichier_gp']['tmp_name'], $dossier . $fichier_gp)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
if(isset($_FILES['image_gp'])){

$dossier = 'image/guides_pratiques/';
$image_gp = basename($_FILES['image_gp']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['image_gp']['tmp_name']);
$extensions = array('.png');
$extension = strrchr($_FILES['image_gp']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$image_gp = strtr($image_gp,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$image_gp = preg_replace('/([^.a-z0-9]+)/i', '-', $image_gp);
if(move_uploaded_file($_FILES['image_gp']['tmp_name'], $dossier . $image_gp)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
}
$req = $bdd->prepare('INSERT INTO guides_pratiques(nom, fichier_gp, image_gp, actif) VALUES (:nom, :fichier_gp, :image_gp, :actif)');
$req->execute(array(
'nom' => $nom,
'fichier_gp' => $fichier_gp,
'image_gp' => $image_gp,
'actif' => $actif
));

header("location:guides_pratiques.php");

}


?>



Si quelqu'un peut me venir en aide, j’apprécierais vraiment.

D'avance merci,

Laetitia
A voir également:

2 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
12 août 2016 à 14:34
Bonjour,

Commence par activer l'affichage des erreurs PHP dans ton fichier de traitement :
error_reporting(E_ALL);

Puis désactive la redirection automatique à la fin de ton scirpt pour pouvoir voir si ta page affiche quelque chose
// header("location:guides_pratiques.php");

0
mocoye Messages postés 76 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 28 septembre 2023 5
20 sept. 2016 à 15:02
Bonjour,

Je reviens vers toi concernant mon upload de fichier, donc j'ai bien suivi tes indications et évidement la réponse est "echec de l'upload" ce que je ne comprend c'est que en local cela fonctionne, le fichier s'enregistre parfaitement, dans le dossier.

Aurais-tu éventuellement d'autres conseils pour m'aider.

Dans tous les cas merci,

Laetitia
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > mocoye Messages postés 76 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 28 septembre 2023
20 sept. 2016 à 15:07
Bonjour,
Le dossier de destination existe bien sur le serveur ?
Tu as vérifié que les droits dessus sont bons (pour l'écriture) ?
As tu essayé de faire un ECHO de tes différentes variables pour voir ce qu'elles contiennent et si elles sont conformes à ce que tu en attends ?
>> je parles des variables : $_FILES['image_gp']['tmp_name'], $dossier et $image_gp
0
mocoye Messages postés 76 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 28 septembre 2023 5
20 sept. 2016 à 15:25
Re,

Alors oui le dossier de destination existe bien, et les droits sont effectivement attribuer tant sur le dossier racine que sur le dossier lui-même.

le fichier image est bien importée, mais le fichier pdf non,

En ce qui concerne l'ECHO des variables je ne sais pas comment faire ?
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > mocoye Messages postés 76 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 28 septembre 2023
20 sept. 2016 à 15:35
echo  "<br>" . $_FILES['image_gp']['tmp_name'];
echo   "<br>" .$dossier;
echo   "<br>" .$image_gp;
echo "<br> chemin de destination =>" . $dossier . $image_gp;

//et puis tu peux ajouter un test sur l'existance du dossier :
if(!file_exists($dossier)){
 echo "<br> Erreur le dossier $dossier n'existe pas !";
}

 if(move_uploaded_file($_FILES['image_gp']['tmp_name'], $dossier . $image_gp))  {
     //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
      echo 'Upload effectué avec succès !';
 } else  {
     //Sinon (la fonction renvoie FALSE).
     echo 'Echec de l\'upload !';
 }

0
mocoye Messages postés 76 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 28 septembre 2023 5
20 sept. 2016 à 16:00
Donc j'ai placé les échos dans la partie qui traite le fichier

et voici le message qui m'est renvoyé

1
ressources/guides_pratiques/
Echec de l'upload PDF!
chemin de destination =>ressources/guides_pratiques/Guide-benevole.pdf
Upload a IMAGE effectué avec succès !
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié par jordane45 le 23/09/2016 à 15:11
Bonjour,

essayes ceci :

<?php 
//-----------------------------------------------------------------------------------------------//
//affichage des erreurs PHP
//-----------------------------------------------------------------------------------------------//
error_reporting(E_ALL);

//-----------------------------------------------------------------------------------------------//
//includes
//-----------------------------------------------------------------------------------------------//
require_once "include/bdd.inc.php"; 

//-----------------------------------------------------------------------------------------------//
//fonctions
//-----------------------------------------------------------------------------------------------//
function filter($in) {
 $search = array ('@[éèêëÊË]@i','@[àâäÂÄ]@i','@[îïÎÏ]@i','@[ûùüÛÜ]@i','@[ôöÔÖ]@i','@[ç]@i','@[ ]@','@[\']@');
 $replace = array ('e','a','i','u','o','c','_','');
 return preg_replace($search, $replace, $in);
}

//nettoyage du nom du fichier
function nettoyage_nom_fichier($strFileName){
 $file = strtr($strFileName,  'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
 $file = preg_replace('/([^.a-z0-9]+)/i', '-', $file);
 return $file;
}

//upload d'un fichier
function upload($file_tmp_name,$file,$dossier_desti){
    $file = nettoyage_nom_fichier($file);
 if(move_uploaded_file($file_tmp_name, $dossier_desti . $file)){
   $result = true;
 } else  {
   $result = false;
 }
  return $result;
}


//-----------------------------------------------------------------------------------------------//
//récupération "propre" des variables (en utilisant l'écriture ternaire)
//-----------------------------------------------------------------------------------------------//
$nom = !empty($_POST["nom"]) ? $_POST["nom"] : NULL;
$actif = isset($_POST["actif"]) ? 1 : 0;


//-----------------------------------------------------------------------------------------------//
// Traitemetn PDF
//-----------------------------------------------------------------------------------------------//
$fichier_gp = !empty($_FILES['fichier_gp']) ? $_FILES['fichier_gp'] : NULL;
$dossier = 'ressources/guides_pratiques/';
if (!is_dir($dossier) && is_writable(!$dossier)) {
  echo "<br> Erreur ! Vous n'avez pas les droits d'écrire dans le répertoire ou le répertoire n'existe pas !";
} 
  
$taille_maxi = 10000000;
$taille = filesize($fichier_gp['tmp_name']);
$extensions = array('.pdf');
$extension = strrchr($fichier_gp['name'], '.'); 

if(!in_array($extension, $extensions)){
   //Si l'extension n'est pas dans le tableau
  $erreur = '<br> Vous devez uploader un fichier de type pdf...';
}

if($taille>$taille_maxi){
  //Verif Taille
  $erreur = '<br> Le fichier est trop gros...';
}

if(empty($erreur)){
  $uploadPDF = upload($fichier_gp['tmp_name'],$fichier_gp,$dossier);
  $msg_upload_PDF = $uploadPDF ? "<br> Upload PDF a effectué avec succès !" : "<br> Echec de l\'upload PDF!<br> chemin de destination =>" . $dossier . $fichier_gp ;
  echo $msg_upload_PDF;
  print_r($fichier_gp); //le temps des tests
}else{
  echo "<br>".$erreur;
}

//-----------------------------------------------------------------------------------------------//
// Traitement Image
//-----------------------------------------------------------------------------------------------//
$image_gp = !empty($_FILES['image_gp']) ? $_FILES['image_gp'] : NULL;
$dossier = 'image/guides_pratiques/';
if (!is_dir($dossier) && is_writable(!$dossier)) {
  echo "<br> Erreur ! Vous n'avez pas les droits d'écrire dans le répertoire ou le répertoire n'existe pas !";
} 
  
$taille_maxi = 10000000;
$taille = filesize($image_gp['tmp_name']);
$extensions = array('.png');
$extension = strrchr($image_gp['name'], '.'); 

if(!in_array($extension, $extensions)){
   //Si l'extension n'est pas dans le tableau
  $erreur = '<br> Vous devez uploader un fichier de type image(.png)...';
}

if($taille>$taille_maxi){
  //Verif Taille
  $erreur = '<br> Le fichier est trop gros...';
}

if(empty($erreur)){
  $uploadIMG = upload($image_gp['tmp_name'],$image_gp,$dossier);
  $msg_upload_IMG = $uploadIMG ? "<br> Upload a IMAGE effectué avec succès !" : "<br> Echec de l\'upload IMAGE !<br> chemin de destination =>" . $dossier . $image_gp;
  echo $msg_upload_IMG;
  print_r($image_gp);  //le temps des tests
}else{
  echo "<br>".$erreur;
}

//--------------------------------------//
// Insertion en BDD
//--------------------------------------//
 //préparation de la requete :
 $sql = "INSERT INTO guides_pratiques(nom, fichier_gp, image_gp, actif) VALUES (:nom, :fichier_gp, :image_gp, :actif)";
 $datas = array(':nom' => $nom,':fichier_gp' => $fichier_gp,':image_gp' => $image_gp,':actif' => $actif);
 // on place la requete dans un bloc try/catch pour traper les éventuelles erreurs
 // Penser à activer l'affichage des erreurs PDO !
 // voir ici : http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
 try{ 
   $req = $bdd->prepare($sql);
   $req->execute($datas);
   //header("location:guides_pratiques.php");
 }catch(Exception $e){
   echo "Erreur SQL ! ".$e->getMessage();
   echo "<br>". $sql . "<br>";
   print_r( $datas );
   exit();
 }

?>


NB : Quelle est la taille du fichier que tu essayes d'uploader sur le serveur ?
Car.... il faut penser à modifier le fichier PHP.INI pour autoriser l'upload de fichiers dont la taille, par défaut, est limité à 2Mo il me semble.....
Au pire... fais un phpinfo(); pour savoir ce qui est configuré.


Cordialement, 
Jordane                                                                 
0
mocoye Messages postés 76 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 28 septembre 2023 5
26 sept. 2016 à 12:37
Bonjour Jordane,

Merci pour ton aide et le temps que tu y passe.

Alors j'ai testé ton code et voici le message en retour :

Warning: strtr() expects parameter 1 to be string, array given in /home/users5/c/crib93/www/regent/ajout_gp2.php on line 25

Notice: Array to string conversion in /home/users5/c/crib93/www/regent/ajout_gp2.php on line 75

Echec de l\'upload PDF!
chemin de destination =>ressources/guides_pratiques/ArrayArray ( [name] => Guide_mecenat.pdf [type] => [tmp_name] => [error] => 2 [size] => 0 )
Warning: strtr() expects parameter 1 to be string, array given in /home/users5/c/crib93/www/regent/ajout_gp2.php on line 25

Warning: move_uploaded_file(): The second argument to copy() function cannot be a directory in /home/users5/c/crib93/www/regent/ajout_gp2.php on line 33

Warning: move_uploaded_file(): Unable to move '/home/temporaire/upload/phppgGUSn' to 'image/guides_pratiques/' in /home/users5/c/crib93/www/regent/ajout_gp2.php on line 33

Notice: Array to string conversion in /home/users5/c/crib93/www/regent/ajout_gp2.php on line 108

Echec de l\'upload IMAGE !
chemin de destination =>image/guides_pratiques/ArrayArray ( [name] => benevolat.png [type] => image/png [tmp_name] => /home/temporaire/upload/phppgGUSn [error] => 0 [size] => 15008 )
Notice: Array to string conversion in /home/users5/c/crib93/www/regent/ajout_gp2.php on line 126

Notice: Array to string conversion in /home/users5/c/crib93/www/regent/ajout_gp2.php on line 126



En ce qui concerne la taille de mes fichiers il y en un à 808 ko et le second 2119 ko, et aucun ne fonctionne.

Je désespère là.
0
mocoye Messages postés 76 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 28 septembre 2023 5
3 oct. 2016 à 18:15
Bonjour Jordane,

Merci pour ton aide et le temps que tu y passe.

Alors j'ai testé ton code et voici le message en retour :

Warning: strtr() expects parameter 1 to be string, array given in /home/users5/c/crib93/www/regent/ajout_gp2.php on line 25

Notice: Array to string conversion in /home/users5/c/crib93/www/regent/ajout_gp2.php on line 75

Echec de l\'upload PDF!
chemin de destination =>ressources/guides_pratiques/ArrayArray ( [name] => Guide_mecenat.pdf [type] => [tmp_name] => [error] => 2 [size] => 0 )
Warning: strtr() expects parameter 1 to be string, array given in /home/users5/c/crib93/www/regent/ajout_gp2.php on line 25

Warning: move_uploaded_file(): The second argument to copy() function cannot be a directory in /home/users5/c/crib93/www/regent/ajout_gp2.php on line 33

Warning: move_uploaded_file(): Unable to move '/home/temporaire/upload/phppgGUSn' to 'image/guides_pratiques/' in /home/users5/c/crib93/www/regent/ajout_gp2.php on line 33

Notice: Array to string conversion in /home/users5/c/crib93/www/regent/ajout_gp2.php on line 108

Echec de l\'upload IMAGE !
chemin de destination =>image/guides_pratiques/ArrayArray ( [name] => benevolat.png [type] => image/png [tmp_name] => /home/temporaire/upload/phppgGUSn [error] => 0 [size] => 15008 )
Notice: Array to string conversion in /home/users5/c/crib93/www/regent/ajout_gp2.php on line 126

Notice: Array to string conversion in /home/users5/c/crib93/www/regent/ajout_gp2.php on line 126



En ce qui concerne la taille de mes fichiers il y en un à 808 ko et le second 2119 ko, et aucun ne fonctionne.

Je désespère là.
0