web-dev-qa-db-fra.com

Enregistrement du fichier dans un répertoire prédéfini à l'aide de FPDF

Je souhaite enregistrer le fichier PDF dans un répertoire spécifié par l'utilisateur. J'utilise FPDF. Et le code est comme ci-dessous:

<?php
//echo "<meta http-equiv=\"refresh\" content=\"0;url=http://www.train2invest.net/useradmin/atest_Khan.php\">";
require('fpdf.php');

//create a FPDF object
$pdf=new FPDF();

//set font for the entire document
$pdf->SetFont('times','',12);
$pdf->SetTextColor(50,60,100);

//set up a page
$pdf->AddPage('P');
$pdf->SetDisplayMode(real,'default');

//Set x and y position for the main text, reduce font size and write content
$pdf->SetXY (10,60);
$pdf->SetFontSize(12);
$pdf->Write(5,'Dear Ms.XYX');

 $filename="test.pdf";
//Output the document
$dir = "/G:/PDF/test.pdf/"; // full path like C:/xampp/htdocs/file/file/
$pdf->Output($dir.$filename,'F');
?>

Maintenant, même si je mets "G:\PDF\" dans le nom du fichier, cela ne l’enregistre pas !! J'ai essayé ce qui suit:

$filename="G:\PDF\test.pdf";
$pdf->Output($filename.'.pdf','F');


$filename="G:\\PDF\\test.pdf";
$pdf->Output($filename.'.pdf','F');

$filename="G:/PDF/test.pdf";
$pdf->Output($filename.'.pdf','F');


$filename="/G:/PDF/test.pdf/";
$pdf->Output($filename.'.pdf','F');

J'ai vérifié que le répertoire que j'essaie d'écrire a les droits d'écriture/lecture et que c'est là. CELA NE FONCTIONNE PAS!

SVP aidez quelqu'un ... 

14
Sharmin

Vous utilisez l’option F de manière incorrecte. F est conçu pour enregistrer le PDF localement sur le serveur et non dans un répertoire spécifique de la machine des utilisateurs. Donc, vous utiliseriez quelque chose comme:

$filename="/home/user/public_html/test.pdf";
$pdf->Output($filename,'F');

Cela enregistrera dans le répertoire public_html de votre serveur Web

32
user2559331

Ayant moi-même eu du mal à le faire, il faut s'assurer de trois choses, dont deux sont mentionnées dans d'autres posts sur ce sujet:

  1. Commande: output ('F', "xyz_file");
  2. Les autorisations sur le répertoire de destination du serveur doivent autoriser les écritures pour des privilèges non escaladés (c'est-à-dire drwxrwxrwx)
  3. Définition du type de contenu: en-tête ("Content-type: application/pdf");
1
9finger

C'est parce que vous essayez d'enregistrer le fichier quelque part, il ne veut pas que vous le fassiez. Probablement parce que vous n'avez pas défini les permissions du répertoire à 777. 

Si votre script PHP est exécuté à partir d'une page Web (servie par Apache, c'est bien le cas), ce code sera exécuté par l'utilisateur Apache (parfois appelé www-data).

Ainsi, votre utilisateur Apache doit pouvoir écrire dans le répertoire dans lequel vous essayez d'écrire.

En règle générale, vous devrez peut-être accorder le privilège d'écriture aux autres utilisateurs de votre système, en utilisant quelque chose comme ceci à partir d'une ligne de commande:

chmod o + w votre_répertoire

Le logiciel que vous utilisez pour télécharger vos fichiers source, si vous utilisez une interface graphique, devrait vous permettre de le faire avec quelques chekbox - vous devez cocher la case "écrire" pour les "autres" utilisateurs.

1
Vinicius Santana

Avez-vous essayé de télécharger des fichiers? Je pense que vous et moi pourrions essayer de faire la même chose et cela semble fonctionner. Je travaille aussi sur un lecteur partagé.

http://php.net/manual/en/features.file-upload.post-method.php

0
J Noel

Autorisations probables de votre service Apache:

http://www.php.net/manual/en/function.opendir.php#87479

0
Paul Norman

Vérifiez la syntaxe ici: http://www.fpdf.org/fr/doc/output.htm Il s’agit de: string Output([string dest [, string name [, boolean isUTF8]]]), Vous devez donc écrire:

$pdf->Output('F', $filename, true); // save into the folder of the script

ou par exemple:

$pdf->Output('F', '/var/www/html/wp-content/' . $filename, true); // save into some other location

ou chemin relatif:

$pdf->Output('F', '../../' . $filename, true); // to parent/parent folder

Cependant, je ne suis pas sûr si vous pouvez utiliser le chemin absolu de Windows ...

0
David Najman

J'ai résolu comme ça:

public functon GeneratePdf(){
    ...
    PDF::Output("C:/xampp/htdocs/MyProject/doc.pdf","F"); 
}

J'ai copié tout le chemin du répertoire dans la méthode Output et je n'ai pas défini d'autorisations supplémentaires pour cela.

J'espère que ça t'aide!!

0