25 Stimmen

Speichern der Datei in ein vorgegebenes Verzeichnis mit FPDF

Ich möchte die PDF-Datei in einem benutzerdefinierten Verzeichnis speichern. Ich verwende FPDF. Und der Code ist wie unten:

<?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');
?>

Selbst wenn ich jetzt die "G:\PDF\" im Dateinamen speichert es nicht!! Ich habe das Folgende versucht:

$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');

Ich habe überprüft, ob das Verzeichnis, in das ich zu schreiben versuche, Schreib-/Leseberechtigung hat, und es ist da. ES FUNKTIONIERT TROTZDEM NICHT!

BITTE helfen Sie jemandem...

53voto

user2559331 Punkte 499

Sie verwenden die Option F falsch. F ist dazu gedacht, die PDF-Datei lokal auf dem Server zu speichern, nicht in einem bestimmten Verzeichnis auf dem Computer des Benutzers. Sie würden also etwas verwenden wie:

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

Dies wird im Verzeichnis public_html Ihres Webservers gespeichert

6voto

David Najman Punkte 417

Überprüfen Sie die Syntax hier: http://www.fpdf.org/en/doc/output.htm Das ist es: string Output([string dest [, string name [, boolean isUTF8]]]) , Sie müssen also schreiben:

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

oder z.B.:

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

oder relativen Pfad:

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

Ich bin mir jedoch nicht sicher, ob Sie den absoluten Pfad von Windows verwenden können...

2voto

9finger Punkte 21

Nachdem ich selbst damit zu kämpfen hatte, gibt es drei Dinge, auf die man achten muss, von denen zwei bereits in anderen Beiträgen zu diesem Thema erwähnt wurden:

  1. Befehl: output('F', "xyz_file");
  2. Die Berechtigungen für das Zielverzeichnis des Servers müssen Schreibzugriffe mit nicht abgestuften Rechten zulassen (d. h. drwxrwxrwx).
  3. Definition des Inhaltstyps: header("Content-type:application/pdf");

1voto

Vinicius Santana Punkte 3576

Es liegt daran, dass Sie versuchen, die Datei an einem Ort zu speichern, an dem sie nicht gespeichert werden soll. Wahrscheinlich, weil Sie die Berechtigungen des Verzeichnisses nicht auf 777 gesetzt haben.

Wenn Ihr PHP-Skript von einer Webseite aus ausgeführt wird (die von Apache bereitgestellt wird), dann wird dieser Code vom Apache-Benutzer (manchmal auch www-data genannt) ausgeführt.

Ihr Apache-Benutzer muss also in der Lage sein, in das Verzeichnis zu schreiben, in das Sie zu schreiben versuchen.

Normalerweise müssen Sie den anderen Benutzern Ihres Systems die Schreibberechtigung erteilen, indem Sie etwas wie das folgende von der Befehlszeile aus verwenden:

chmod o+w Ihr_Verzeichnis

Die Software, die Sie zum Hochladen Ihrer Quelldateien verwenden, sollte Ihnen das mit ein paar Kontrollkästchen ermöglichen - Sie müssen das Kontrollkästchen "write" für die "others"-Benutzer aktivieren.

1voto

Harrison O Punkte 911

Hier ist eine einfache Lösung, die Ihnen hilft, die Datei in einem bestimmten Verzeichnis zu speichern und auch die URL der Datei zu haben, die Sie in der Datenbank speichern können.

$invoice = new phpinvoice();
...
...

$path = $_SERVER["DOCUMENT_ROOT"].'/uploads/';
$url = $_SERVER['HTTP_HOST'].'/uploads/';

$invoice->render($path.'.pdf','F');
return $url.'.pdf'; // print_r($url.'.pdf')

Ich hoffe, das hilft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X