【问题标题】:Dynamic filename when using file_put_contents(), is it possible?使用 file_put_contents() 时的动态文件名,可以吗?
【发布时间】:2014-04-16 12:50:51
【问题描述】:

好的,所以我正在尝试完成以下操作:

  • 根据当前日期 + 当前时间 + 来自名为 skift 的表单中的变量生成文件名的 PDF。
  • 将所述文件放置在名为skiftrapportPDF 的静态文件夹中,并将其放置在名为YearMonthexamle(201404) 的子文件夹中

我将一个名为 $filename 的变量放在一起,当我 echo $filename 时,我得到以下结果。

/skiftrapportPDF/201404/Skiftrapport2014-04-16_125449-Orange.pdf

我的代码

        $dir = dirname(__FILE__);
        $skift = $_POST['skift'];
        $datum = Date("Y-m-d");
        $tid = Date("H:i:s");
        if($skift=='1')$skift='Svart';if($skift=='2')$skift='Blå';if($skift=='3')$skift='Röd';if($skift=='4')$skift='Orange';

        //this is when i have generated my $html
        require_once($dir.'/skift_rapport_pdf.php');

        require_once($dir.'/include/dompdf/dompdf_config.inc.php');  

        $dompdf = new DOMPDF(); // Create new instance of dompdf  
        $dompdf->load_html($html); // Load the html  
        $dompdf->render(); // Parse the html, convert to PDF  
        $pdf_content = $dompdf->output(); // Put contents of pdf into variable for later

        $month  = date('Ym');

        if (!is_dir("skiftrapportPDF/".$month)) {
          // dir doesn't exist, make it
          mkdir("skiftrapportPDF/".$month);
}
        $skift = $_POST['skift'];
        $datum = Date("Y-m-d");
        $tid = Date("His");
        if($skift=='1')$skift='Svart';if($skift=='2')$skift='Blå';if($skift=='3')$skift='Röd';if($skift=='4')$skift='Orange';
        $filename = '/skiftrapportPDF/'.$month.'/Skiftrapport'.$datum.'_'.$tid.'-'.$skift.'.pdf';

    //I've tried using either of the following....
    file_put_contents($filename, $pdf_content);
    //Commented to try using file_put_contents()
    //$fp = fopen($filename, "a"); 
    //fwrite($fp, $pdf_content); 
    //fclose($fp);

使用 fopen(),fwrite,fclose 给了我这个错误:

Warning: fopen(/skiftrapportPDF/201404/Skiftrapport2014-04-16_125449-Orange.pdf) [function.fopen]: failed to open stream: No such file or directory in file.php on line 863

并且使用 file_put_contents() 给了我这个错误。

Warning: file_put_contents(/skiftrapportPDF/201404/Skiftrapport2014-04-16_144631-Orange.pdf) [function.file-put-contents]: failed to open stream: No such file or directory in file.php on line 857

【问题讨论】:

  • 那个目录是可写的???
  • 非常自我解释,PHP 找不到您尝试打开的目录/文件

标签: php pdf-generation dompdf


【解决方案1】:

你只需要重写下面一行。

要么使用完整的服务器路径,要么从文件中删除起始“/”。

1) 像这样使用

$filename = $_SERVER['DOCUMENT_ROOT'] . '/skiftrapportPDF/'.$month.'/Skiftrapport'.$datum.'_'.$tid.'-'.$skift.'.pdf';

或者写成下面的方式,

$filename = 'skiftrapportPDF/'.$month.'/Skiftrapport'.$datum.'_'.$tid.'-'.$skift.'.pdf';

这两个都适合你。随便试一下

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-12
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    相关资源
    最近更新 更多