Сохранение файла в заданный каталог с использованием FPDF
Я хочу сохранить файл 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');
Я проверил, что каталог, который я пытаюсь написать, имеет право на чтение/чтение и его там. ЭТО ВСЕ ЕЩЕ НЕ РАБОТАЕТ!
ПОЖАЛУЙСТА, помогите кому-нибудь...
Ответы
Ответ 1
Вы неправильно используете параметр F, F предназначен для сохранения PDF файла локально на сервере не в определенном каталоге на компьютере пользователя. Поэтому вы должны использовать что-то вроде:
$filename="/home/user/public_html/test.pdf";
$pdf->Output($filename,'F');
Это будет сохранено в каталоге public_html вашего веб-сервера
Ответ 2
Это потому, что вы пытаетесь сохранить файл где-то, в котором он не хочет. Скорее всего, потому, что ваш havent установил права доступа к каталогу на 777.
Если ваш PHP script выполняется с веб-страницы (обслуживается Apache, это так), то этот код будет выполняться пользователем Apache (иногда называемым www-data).
Итак, ваш пользователь Apache должен иметь возможность писать в каталог, который вы пытаетесь записать.
Как правило, вам может потребоваться предоставить права на запись другим пользователям вашей системы, используя что-то вроде этого из командной строки:
chmod o + w your_directory
Программное обеспечение, которое вы используете для загрузки исходных файлов, если это сделать с помощью графического интерфейса, должно позволить вам сделать это с помощью нескольких chekboxes - вам нужно установить флажок "писать" для "других" пользователей.
Ответ 3
Борясь с этим сам, нужно убедиться в трех вещах, две из которых упомянуты в других постах на эту тему:
- Команда: output ('F', "xyz_file");
- Разрешения в каталоге назначения сервера должны разрешать запись для неэскалированных привилегий (например, drwxrwxrwx)
- Определение типа контента: заголовок ("Тип контента: приложение /pdf");
Ответ 4
Вероятные разрешения вашего сервиса Apache:
http://www.php.net/manual/en/function.opendir.php#87479
Ответ 5
Вы пытались загрузить файл? Я думаю, что вы и я, возможно, пытаемся сделать то же самое, и это, похоже, работает. Я также работаю с общим диском.
http://php.net/manual/en/features.file-upload.post-method.php
Ответ 6
Проверьте синтаксис здесь: 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...
Ответ 7
измените "F" на "D". Буду заставлять скачивать. Таким образом, ваша выходная строка $pdf-> должна выглядеть следующим образом.
$pdf->Output($path,'D');