我想将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');
我已经检查过我要写的目录是否具有写入/读取权限,并且它就在那里。它仍然不起作用!
请帮助别人......
答案 0 :(得分:34)
您正在错误地使用F选项,F旨在将本地PDF保存在用户计算机上的特定目录中。所以你会使用类似的东西:
$filename="/home/user/public_html/test.pdf";
$pdf->Output($filename,'F');
这将保存在您的网络服务器的public_html目录中
答案 1 :(得分:1)
因为你试图将文件保存在它不想要你的地方。很可能是因为你没有将目录的权限设置为777.
如果您的PHP脚本是从网页执行的(由Apache提供,那么),则此代码将由Apache(有时称为www-data)用户执行。
因此,您的Apache用户需要能够写入您尝试写入的目录。
通常,您可能必须使用命令行中的类似内容向系统的其他用户提供写权限:
chmod o + w your_directory
您用来上传源文件的软件(如果使用GUI执行此操作)应允许您使用几个chekbox来执行此操作 - 您需要选中“其他”用户的“写入”复选框
答案 2 :(得分:1)
在我自己努力奋斗之后,有三件事需要确保,其中两个在这个主题的其他帖子中提到:
答案 3 :(得分:1)
在此处检查语法: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绝对路径...
答案 4 :(得分:0)
您的Apache服务的可能权限:
答案 5 :(得分:0)
您是否尝试过上传文件?我想你和我可能会尝试做同样的事情,这似乎有效。我也在使用共享驱动器。
http://php.net/manual/en/features.file-upload.post-method.php
答案 6 :(得分:0)
我这样解决:
public functon GeneratePdf(){
...
PDF::Output("C:/xampp/htdocs/MyProject/doc.pdf","F");
}
我将所有目录路径复制到了Output方法中,并且没有为此设置更多权限。
希望对您有帮助!
答案 7 :(得分:0)
这是一个简单的解决方案,可以帮助您将文件保存到指定目录,并具有可以保存到数据库的文件的网址。
$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')
我希望这会有所帮助。
答案 8 :(得分:-1)
将'F'更改为'D'。 D部队下载。 所以你的$ pdf-&gt;输出行应该是这样的。
$pdf->Output($path,'D');