Signaler

Enregistrement fichier sur FTP

Posez votre question mocoye 58Messages postés jeudi 13 septembre 2012Date d'inscription 23 septembre 2016 Dernière intervention - Dernière réponse le 23 sept. 2016 à 15:11
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
Afficher la suite 
Utile
+0
moins plus
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");

Lakano- 20 sept. 2016 à 20:45
pour avoir un retour sur les variables: je préfère utiliser :
echo "<pre>";print_r($_FILES);echo "</pre>";
.
Ca peut aider à déboguer plus rapidement.
Répondre
mocoye 58Messages postés jeudi 13 septembre 2012Date d'inscription 23 septembre 2016 Dernière intervention - 21 sept. 2016 à 09:35
Bonjour à tous,

Tout d'abord merci de votre aide,

Voici le code tel qu'il est actuellement avec les ECHO ajouté


<?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']))echo "<br>" .$fichier_gp;{

$dossier = 'ressources/guides_pratiques/'; echo "<br>" .$dossier;
$fichier_gp = basename($_FILES['fichier_gp']['name']); echo "<br>" . $_FILES['fichier_gp']['tmp_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(!file_exists($dossier)){
echo "<br> Erreur le dossier $dossier n'existe pas !";
}
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)
{
$erreur = '<br> 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 '<br> Upload PDF a effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo '<br> Echec de l\'upload PDF!';echo "<br> chemin de destination =>" . $dossier . $fichier_gp;
}
}
else
{
echo $erreur;
}
if(isset($_FILES['image_gp']))echo "<br>" .$image_gp;{

$dossier = 'image/guides_pratiques/'; echo "<br>" .$dossier;
$image_gp = basename($_FILES['image_gp']['name']); echo "<br>" . $_FILES['image_gp']['tmp_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(!file_exists($dossier)){
echo "<br> Erreur le dossier $dossier n'existe pas !";
}

if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = '<br> Vous devez uploader un fichier de type png...';
}
if($taille>$taille_maxi)
{
$erreur = '<br> 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 '<br> Upload a IMAGE effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo '<br> Echec de l\'upload IMAGE !';echo "<br> chemin de destination =>" . $dossier . $image_gp;
}
}
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
));
error_reporting(E_ALL);

//header("location:guides_pratiques.php");

}


?>



Là j'avoue que je ne comprends pas pourquoi ça fonction pour l'image, mais pas pour le pdf.

Si vous pouvez m'éclairer
Répondre
mocoye 58Messages postés jeudi 13 septembre 2012Date d'inscription 23 septembre 2016 Dernière intervention - 23 sept. 2016 à 08:44
Bonjour à tous,

Tout d'abord merci de votre aide,

Voici le code tel qu'il est actuellement avec les ECHO ajouté


<?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']))echo "<br>" .$fichier_gp;{

$dossier = 'ressources/guides_pratiques/'; echo "<br>" .$dossier;
$fichier_gp = basename($_FILES['fichier_gp']['name']); echo "<br>" . $_FILES['fichier_gp']['tmp_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(!file_exists($dossier)){
echo "<br> Erreur le dossier $dossier n'existe pas !";
}
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)
{
$erreur = '<br> 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 '<br> Upload PDF a effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo '<br> Echec de l\'upload PDF!';echo "<br> chemin de destination =>" . $dossier . $fichier_gp;
}
}
else
{
echo $erreur;
}
if(isset($_FILES['image_gp']))echo "<br>" .$image_gp;{

$dossier = 'image/guides_pratiques/'; echo "<br>" .$dossier;
$image_gp = basename($_FILES['image_gp']['name']); echo "<br>" . $_FILES['image_gp']['tmp_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(!file_exists($dossier)){
echo "<br> Erreur le dossier $dossier n'existe pas !";
}

if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = '<br> Vous devez uploader un fichier de type png...';
}
if($taille>$taille_maxi)
{
$erreur = '<br> 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 '<br> Upload a IMAGE effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo '<br> Echec de l\'upload IMAGE !';echo "<br> chemin de destination =>" . $dossier . $image_gp;
}
}
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
));
error_reporting(E_ALL);

//header("location:guides_pratiques.php");

}


?>



Là j'avoue que je ne comprends pas pourquoi ça fonction pour l'image, mais pas pour le pdf.

Si vous pouvez m'éclairer
Répondre
jordane45 14573Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 26 septembre 2016 Dernière intervention - 23 sept. 2016 à 08:45
Et que donnent les echo ?
Répondre
mocoye 58Messages postés jeudi 13 septembre 2012Date d'inscription 23 septembre 2016 Dernière intervention - 23 sept. 2016 à 09:14
Bonjour,

les ECHO donnent le retour suivant :

1

ressources/guides_pratiques/

Echec de l'upload PDF!
chemin de destination =>ressources/guides_pratiques/Guide-mecenat.pdf

image/guides_pratiques/
/home/temporaire/upload/php1qvXOm
Upload a IMAGE effectué avec succès !



J'avoue je comprends rien apparemment le fichier est bien présent et le dossiers de stockage existe mais il ne l'enregistre pas.
Répondre
Ajouter un commentaire
Utile
+0
moins plus
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                                                                 
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !