par
michgoarin » 16 févr. 2021, 09:54
Bonjour,
Cette page PHP permet à l'utilisateur de télécharger un fichier PDF grâce au formulaire en ligne. Ce fichier est fusionné avec un fichier présent sur le serveur. Je souhaiterai donc concaténer deux fichiers :
- Un fichier hébergé sur le serveur
- Un fichier uploader par un utilisateur
Ci-dessous ma page de test :
Code : Tout sélectionner
<?php
use PDFMerger\PDFMerger;
require_once 'PDFMerger.php';
if ($_POST['enregistrer']=="Générer une ligne Devis" ){
// On traite le document télécharger
if(!empty($_FILES['devis_original']['tmp_name']) AND is_uploaded_file($_FILES['devis_original']['tmp_name']))
{
// vérifier si le dossier existe
if (!is_dir("devis_original/" ) == true)
{
mkdir ("devis_original/", 0777,true);
}
// On définit notre répertoire cible
$repertoireDevis="devis_original/";
$nom_devis="devisOriginal"; // Ce nom variera en fonction de l'id de la table `devis`
// On va vérifier la taille du fichier en ne passant pas par $_FILES['devis_original']['size'] pour éviter les failles de sécurité
if(filesize($_FILES['devis_original']['tmp_name'])<100000000){
// On créé un tableau contenant les extensions autorisées
$extDocOk = array('.pdf','.PDF');
// On lit l'extension du fichier
$fileDocExt = substr($_FILES['devis_original']['name'],-4,4);
// Si c'est une image on traite le fichier uploadé
if(in_array($fileDocExt,$extDocOk)){
// On définit le lien à insérer dans la base
$lien_devis=$repertoireDevis.$nom_devis.$fileDocExt;
//On vérifie si le dossier de destination est writable
if(!is_writable($repertoireDevis))
die('Impossible d\'écrire dans le répertoire cible.');
//Copie le fichier dans le répertoire de destination
if(move_uploaded_file($_FILES['devis_original']['tmp_name'], $lien_devis)){
$size_doc=1;
//Le fichier a été uploadé correctement
}
else{//Erreur
$mauvaisFormat[]='Erreur lors de la copie du fichier';
}
}
else
{
$mauvaisFormat[]= "Le document doit être en .doc ou .pdf";
}
}
else
{
$mauvaisFormat[]= 'Le fichier est trop gros, veuillez compresser le fichier !!!';
}
}
else
{
$size_doc=0;
$lien_devis="";
$tabloVide[] ="Veuillez sélectionner un fichier au format PDF !!!";
}
// Début da la procédure de concaténation des fichiers PDF
ob_start();
$pdf = new PDFMerger;
$pdf->addPDF('documents/bon_de_commande/bdc12269-02-2021-8198.pdf', 'all')
->addPDF($lien_devis, 'all')
->merge('file', $repertoireDevis.'devis-bdc-test15022021.pdf');
ob_end_clean();
// Fin de la procédure de concaténation des fichiers PDF
// On vérifie la présence de $pdf
if ($pdf){echo "C'est Good !!!";}else{echo "C'est pas Good !!!";}
}
?>
<!DOCTYPE HTML>
<html>
<head>
<title>Générer Ligne Comptable</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body class="homepage">
<form action='sample.php' method='post' name='formDevis' id='loginform' enctype='multipart/form-data'>
<label for 'devis_original'>Devis original (format .pdf) :</label>
<input type="file" name="devis_original" /><br />
<input style="margin-bottom:2em;" class="actions style1" type="submit" name="enregistrer" value="Générer une ligne Devis" />
</form>
</body>
</html>
Je me demande à quel moment le fichier envoyé par l'internaute est-il réellement présent sur le serveur: après la ligne "if(move_uploaded_file($_FILES['devis_original']['tmp_name'], $lien_devis)){...}" ou à la fin d’exécution de la page. Cela pourrait expliquer que cette page n'est jamais fusionnée.
Je galère depuis quelques jours sur ce fichier.
Merci pour le coup de main.
Bonjour,
Cette page PHP permet à l'utilisateur de télécharger un fichier PDF grâce au formulaire en ligne. Ce fichier est fusionné avec un fichier présent sur le serveur. Je souhaiterai donc concaténer deux fichiers :
- Un fichier hébergé sur le serveur
- Un fichier uploader par un utilisateur
Ci-dessous ma page de test :
[code]
<?php
use PDFMerger\PDFMerger;
require_once 'PDFMerger.php';
if ($_POST['enregistrer']=="Générer une ligne Devis" ){
// On traite le document télécharger
if(!empty($_FILES['devis_original']['tmp_name']) AND is_uploaded_file($_FILES['devis_original']['tmp_name']))
{
// vérifier si le dossier existe
if (!is_dir("devis_original/" ) == true)
{
mkdir ("devis_original/", 0777,true);
}
// On définit notre répertoire cible
$repertoireDevis="devis_original/";
$nom_devis="devisOriginal"; // Ce nom variera en fonction de l'id de la table `devis`
// On va vérifier la taille du fichier en ne passant pas par $_FILES['devis_original']['size'] pour éviter les failles de sécurité
if(filesize($_FILES['devis_original']['tmp_name'])<100000000){
// On créé un tableau contenant les extensions autorisées
$extDocOk = array('.pdf','.PDF');
// On lit l'extension du fichier
$fileDocExt = substr($_FILES['devis_original']['name'],-4,4);
// Si c'est une image on traite le fichier uploadé
if(in_array($fileDocExt,$extDocOk)){
// On définit le lien à insérer dans la base
$lien_devis=$repertoireDevis.$nom_devis.$fileDocExt;
//On vérifie si le dossier de destination est writable
if(!is_writable($repertoireDevis))
die('Impossible d\'écrire dans le répertoire cible.');
//Copie le fichier dans le répertoire de destination
if(move_uploaded_file($_FILES['devis_original']['tmp_name'], $lien_devis)){
$size_doc=1;
//Le fichier a été uploadé correctement
}
else{//Erreur
$mauvaisFormat[]='Erreur lors de la copie du fichier';
}
}
else
{
$mauvaisFormat[]= "Le document doit être en .doc ou .pdf";
}
}
else
{
$mauvaisFormat[]= 'Le fichier est trop gros, veuillez compresser le fichier !!!';
}
}
else
{
$size_doc=0;
$lien_devis="";
$tabloVide[] ="Veuillez sélectionner un fichier au format PDF !!!";
}
// Début da la procédure de concaténation des fichiers PDF
ob_start();
$pdf = new PDFMerger;
$pdf->addPDF('documents/bon_de_commande/bdc12269-02-2021-8198.pdf', 'all')
->addPDF($lien_devis, 'all')
->merge('file', $repertoireDevis.'devis-bdc-test15022021.pdf');
ob_end_clean();
// Fin de la procédure de concaténation des fichiers PDF
// On vérifie la présence de $pdf
if ($pdf){echo "C'est Good !!!";}else{echo "C'est pas Good !!!";}
}
?>
<!DOCTYPE HTML>
<html>
<head>
<title>Générer Ligne Comptable</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body class="homepage">
<form action='sample.php' method='post' name='formDevis' id='loginform' enctype='multipart/form-data'>
<label for 'devis_original'>Devis original (format .pdf) :</label>
<input type="file" name="devis_original" /><br />
<input style="margin-bottom:2em;" class="actions style1" type="submit" name="enregistrer" value="Générer une ligne Devis" />
</form>
</body>
</html>
[/code]
Je me demande à quel moment le fichier envoyé par l'internaute est-il réellement présent sur le serveur: après la ligne "if(move_uploaded_file($_FILES['devis_original']['tmp_name'], $lien_devis)){...}" ou à la fin d’exécution de la page. Cela pourrait expliquer que cette page n'est jamais fusionnée.
Je galère depuis quelques jours sur ce fichier.
:shock: :oops:
Merci pour le coup de main.