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 ...
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
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:
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.
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
Autorisations probables de votre service Apache:
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 ...
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!!