【问题标题】:Saving generated pdf directly to a folder folder - Codeigniter将生成的 pdf 直接保存到文件夹文件夹 - Codeigniter
【发布时间】:2013-05-15 20:02:15
【问题描述】:

我想生成创建的 pdf 并将其发送到一个文件夹,但我收到一个错误,这个错误:

A PHP Error was encountered

Severity: Warning

Message: file_put_contents(http://localhost/NQCL1/workbooks/NDQA000000001/NDQA000000001.pdf) [function.file-put-contents]: failed to open stream: HTTP wrapper does not support writeable connections

Filename: libraries/Dompdf_lib.php

Line Number: 13

Dompdf_lib.php //库文件

class Dompdf_lib extends Dompdf{

        function createPDF($html, $filename='', $stream=TRUE){  
            $this->load_html($html);
            $this->render();
            $this->set_paper('a4', 'potratit');
            if ($stream) {
                //$this->stream($filename.".pdf"); - This works just ok
                file_put_contents(base_url().'workbooks/s'.$filename.'/'.$filename.".pdf", $this->output()); 

            } else {
                return $this->output();
            }
        }

}

coa.php //控制器

function generateCoaDraft($labref,$offset=0) {
    // error_reporting(1);
    $data['labref'] = $labref = $this->uri->segment(3);
    $data['information'] = $this->getRequestInformation($labref);
    $data['tests_requested'] = $this->getRequestedTests($labref);
    $data['trd'] = $this->getRequestedTestsDisplay2($labref);
    $data['compedia_specification'] = $this->getCOABody($labref);
   $html = $this->load->view('coa_v', $data, true);
   $this->dompdf_lib->createPDF($html, $labref);
}

如果我使用它而不是 file_put,则此行可以正常工作....,如果我说 STREAM=FALSE,它会返回空白页

$this->stream($filename.".pdf"); 

【问题讨论】:

  • 只需从命令之前删除 $this-> 即可写入文件。 file_put_contents() 是一个原生 PHP 函数。
  • 我已删除 $this,现在出现新的连接错误
  • 该错误是由于在文件路径中使用http,您在路径中使用了base_url()。结帐stackoverflow.com/questions/7490164/…
  • 非常感谢鲁内尔,我现在做对了

标签: php codeigniter codeigniter-2 dompdf


【解决方案1】:

file_put_contents是原生PHP函数,所以改行为;

file_put_contents('workbooks/s'.$filename.'/'.$filename.".pdf", $this->output());

通过在它前面加上 $this-> 系统试图找到一个属于该类的函数(它不存在),因此出现错误。

【讨论】:

    【解决方案2】:

    我意识到我正在尝试通过 HTTP 与服务器通信,我只用直接路径修改了代码,它工作了,谢谢 guyz

    这个:

    file_put_contents(base_url().'workbooks/s'.$filename.'/'.$filename.".pdf", $this->output());
    

    到这里:

    file_put_contents('workbooks/s'.$filename.'/'.$filename.".pdf", $this->output());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 2017-02-01
      • 2019-09-09
      • 2014-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多