使用变量作为文件名在php中不起作用

时间:2019-03-07 09:46:50

标签: php

所以我有以下代码:

$pcbestand = date('Y-m-d h:i:s A') . ".xlsx";

$file =   $pcbestand ;
header('Content-Disposition: attachment; filename=' . $file );
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Length: ' . filesize($file));
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
readfile($pcbestand);

$ pcbestand使用当前日期和时间制作一个.xlsx文件,所以我试图将此名称命名为“另存为”对话框,但这是我得到的:

enter image description here

如您所见,.xlsx部分丢失。我究竟做错了什么?请帮忙。

如果我下载文件,扩展名为null。

4 个答案:

答案 0 :(得分:3)

问题可能是Windows文件名不能包含字符:。试试

$pcbestand = date('Y-m-d h_i_s A') . ".xlsx";

甚至

$pcbestand = date('Y_m_d_h_i_s_A') . ".xlsx";

保持一致并删除空格(文件名中的空格通常也不好。)

答案 1 :(得分:0)

除了在文件名中使用诸如:之类的必须删除的不允许使用的字符外,您还需要引用该名称或删除所有空格:

header('Content-Disposition: attachment; filename="' . $file . '"' );

答案 2 :(得分:0)

尝试

$pcbestand = date('Y-m-d') .".xlsx";

安装

$pcbestand = date('Y-m-d h:i:s A') . ".xlsx";

答案 3 :(得分:-5)

使用此 转换为字符串

     $date   = new DateTime(); //this returns the current date time
     $result = $date->format('Y-m-d h:i:s A');
     $pcbestand = str_replace(':', '', $result ) . ".xlsx";