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

So I have this code:

$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 make en .xlsx file with the current date and time, so I am trying to give this name to my save as dialog, but this is what I get:

enter image description here

as you can see the .xlsx part is missing. what am I doing wrong? please help.

if I download the file the extension is null.

The issue is probably that windows filenames cannot contain the character :. Try

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

or even

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

to stay consistent and remove spaces (spaces in filenames are usually not good too.)

Aside from using disallowed characters in your filename like : that must be removed, you will also need to quote the name or get rid of all the spaces:

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

Try

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

insted of

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