所以我有以下代码:
$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文件,所以我试图将此名称命名为“另存为”对话框,但这是我得到的:
如您所见,.xlsx部分丢失。我究竟做错了什么?请帮忙。
如果我下载文件,扩展名为null。
答案 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";