PHP Excel:将创建的PDF保存到远程服务器,而不是用户downlaod

PHP Excel:将创建的PDF保存到远程服务器,而不是用户downlaod,php,phpexcel,Php,Phpexcel,这与我前面的问题re()类似,区别在于现在我使用PHPExcel来创建PDF 我尝试了file_put方法,但它下载了一个空PDF。那么,我哪里做错了,或者这不能做到 下面是我的最终代码,它输出了fiel和我尝试过的内容 header('Content-Type: application/pdf'); header('Content-Disposition: attachment;filename="TestSheet.pdf"'); header('Cache-Control: m

这与我前面的问题re()类似,区别在于现在我使用PHPExcel来创建PDF

我尝试了file_put方法,但它下载了一个空PDF。那么,我哪里做错了,或者这不能做到

下面是我的最终代码,它输出了fiel和我尝试过的内容

  header('Content-Type: application/pdf');
  header('Content-Disposition: attachment;filename="TestSheet.pdf"');
  header('Cache-Control: max-age=0');

  $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
  $objWriter->save('php://output');

  $file_location = $save_Path;
  file_put_contents($file_location,$objWriter);
  exit;
似乎它一旦被保存,它就清除了数据,因此空白的PDF


谢谢

放弃标题。。。。它们都是告诉web浏览器需要一个PDF文件,但你不会将任何东西发送回浏览器(更不用说PDF文件了)

正在告诉PHPExcel将生成的PDF直接发送到web浏览器。。。。您说您不想这样做,而是想保存到远程服务器

您需要从$objWriter->save()截取结果,这样它就不会进入浏览器。使用输出缓冲捕获它:

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
ob_start();
$objWriter->save('php://output');
$myPdfData = ob_get_contents();
ob_end_clean();
然后,您在$myPdfData中捕获了PDF数据流,然后可以执行以下操作:

file_put_contents($file_location, $myPdfData);

请注意,这可能是内存不足的情况

丢弃标头。。。。它们都是告诉web浏览器需要一个PDF文件,但你不会将任何东西发送回浏览器(更不用说PDF文件了)

正在告诉PHPExcel将生成的PDF直接发送到web浏览器。。。。您说您不想这样做,而是想保存到远程服务器

您需要从$objWriter->save()截取结果,这样它就不会进入浏览器。使用输出缓冲捕获它:

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
ob_start();
$objWriter->save('php://output');
$myPdfData = ob_get_contents();
ob_end_clean();
然后,您在$myPdfData中捕获了PDF数据流,然后可以执行以下操作:

file_put_contents($file_location, $myPdfData);

请注意,这可能是内存不足

非常感谢,因为我永远不会得到它,但很好thanks@Mark贝克:回答得好。这对我来说是成功的。你说的记忆饥饿是什么意思?我使用Ajax请求从excel文件创建了pdf文件。当我生成的Excel文件包含超过50行时,ajax调用将中止。我不知道为什么。但当我试图单独创建纯xls文件时,它是有效的。对此我将永远不会得到这样的赞赏,但非常好thanks@Mark贝克:回答得好。这对我来说是成功的。你说的记忆饥饿是什么意思?我使用Ajax请求从excel文件创建了pdf文件。当我生成的Excel文件包含超过50行时,ajax调用将中止。我不知道为什么。但当我试图单独创建纯xls文件时,它是有效的。