【发布时间】:2015-04-21 13:52:25
【问题描述】:
关于下载文件和定义标题,我无法为我的文件分配动态filename。使用以下代码时:
header("Content-Disposition: attachment; filename=test.csv");
会生成一个test.csv 文件以供下载。但是,如果我使用这个:
header('Content-Disposition: attachment; filename=' . $filename . '.csv');
它会生成一个.php 文件。使用此方法也不会将Content-Disposition 或filename 传递给标头。
完整代码:
session_start();
$file =$_SESSION['csvf'];
$filename = $file."_".date("Y-m-d_H-i",time());
header ( "Content-type: text/csv" );
header("Content-Disposition: attachment; filename=test.csv");
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
print($file);
exit ();
正确的语法是什么?
编辑
建议后的工作代码
session_start ();
$file = $_SESSION ['csvf'];
$filename =date ( "Y-m-d_H-i", time () );
header ( "Content-type: text/csv" );
header ( "Content-Disposition: attachment; filename=".$filename );
header ( 'Expires: 0' );
header ( 'Cache-Control: must-revalidate' );
header ( 'Pragma: public' );
header ( 'Content-Length: ' . filesize ( $file ) );
print ($file) ;
exit ();
【问题讨论】:
-
var_dump你的$filename变量,看看它包含什么......你可能还想修剪它以尾随"或' -
实际文件在哪里?我还看到您使用
filesize($file)并同时使用$file为$filename,这对我来说没有多大意义,请澄清。 -
@PedroLobito Ye,严重错误我从
$filename中删除了$file。 -
@AresDraguna 谢谢。
标签: php http-headers filenames