Сохранение файла в заданном каталоге с использованием FPDF - PullRequest
15 голосов
/ 02 декабря 2010

Я хочу сохранить файл PDF в указанный пользователем каталог. Я использую FPDF. И код, как показано ниже:

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

Теперь, даже если я добавлю "G:\PDF\" в имя файла, оно не сохранится !! Я пробовал следующее:

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

Я проверил, что каталог, который я пытаюсь написать, имеет разрешение на запись / чтение, и он там. ЭТО ЕЩЕ НЕ РАБОТАЕТ!

ПОЖАЛУЙСТА, помогите кому-нибудь ...

Ответы [ 8 ]

34 голосов
/ 08 июля 2013

Вы используете опцию F неправильно, F предназначен для сохранения PDF локально на сервере, а не в определенном каталоге на компьютере пользователя.Таким образом, вы бы использовали что-то вроде:

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

Это сохранит в каталоге public_html вашего веб-сервера

2 голосов
/ 24 января 2019

Проверьте синтаксис здесь: http://www.fpdf.org/en/doc/output.htm Это: string Output([string dest [, string name [, boolean isUTF8]]]), поэтому вы должны написать:

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

или, например:

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

или относительныйпуть:

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

Однако я не уверен, что вы можете использовать абсолютный путь Windows ...

2 голосов
/ 27 августа 2016

Сам борясь с этим, нужно убедиться в трех вещах, две из которых упомянуты в других постах на эту тему:

  1. Команда: output ('F', "xyz_file");
  2. Разрешения на каталог назначения сервера должны разрешать запись для неэскалационных привилегий (например, drwxrwxrwx)
  3. Определение типа контента: заголовок («Тип контента: приложение / pdf»);
1 голос
/ 26 сентября 2012

Это потому, что вы пытаетесь сохранить файл где-то, что вам не нужно. Скорее всего, потому что вы не установили права доступа к каталогу 777.

Если ваш PHP-скрипт выполняется с веб-страницы (обслуживаемой Apache, то есть), то этот код будет выполняться пользователем Apache (иногда его называют www-data).

Итак, ваш пользователь Apache должен иметь возможность записи в каталог, в который вы пытаетесь записать.

Как правило, вам, возможно, придется предоставить привилегию записи другим пользователям вашей системы, используя что-то вроде этого из командной строки:

chmod o + w your_directory

Программное обеспечение, которое вы используете для загрузки ваших исходных файлов, если вы делаете это с помощью графического интерфейса, должно позволять вам делать это с парой чекбоксов - вам необходимо установить флажок «запись» для «других» пользователей .

0 голосов
/ 15 февраля 2019

Я решил следующим образом:

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

Я скопировал весь путь к каталогу в метод вывода и не установил дальнейшие разрешения для этого.

Надеюсь, это вам поможет !!

0 голосов
/ 22 марта 2018

изменить «F» на «D».Буду заставлять скачивать.Таким образом, ваша строка вывода $ pdf-> должна выглядеть следующим образом.

$pdf->Output($path,'D');
0 голосов
/ 29 марта 2016

Вы пробовали загрузить файл?Я думаю, что вы и я, возможно, пытаемся сделать то же самое, и это похоже на работу.Я также работаю на общем диске.

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

0 голосов
/ 03 декабря 2010

Вероятные разрешения вашей службы Apache:

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

...