PHP创建文件,然后强制用户下载它 - 不工作

时间:2013-12-17 00:37:22

标签: php forms post

所以我有一个用户完成的表单,然后将它们发送到一个php页面,该页面通过$ _POST发送所有变量,然后将输出写入txt文件。 - 工作得很好。我的问题是我试图强迫用户在创建文件的同一页面上下载它,在创建文件之后我似乎无法使其工作,除了正在创建的文件之外没有任何反应....

以下是我所拥有的基本知识:

编辑:发现问题 - 我的fclose在线路上发生致命错误......有什么想法在那里有什么问题?

$myfile="c-form" . date('m-d-Y_hia').'.txt';
$fileHandle = fopen($myfile, 'w');
//write stuff to file
$fclose($fileHandle);
//file is now closed
//now force user to download file that was just made
header('Content-disposition: attachment; filename=$myfile');
header('Content-type: text/plain');

2 个答案:

答案 0 :(得分:2)

您需要在下面的行中使用双引号:

header("Content-disposition: attachment; filename=$myfile");

答案 1 :(得分:0)

尝试这样的事情:

$myfilename="c-form".date('m-d-Y_hia').'.txt';
// collect the data to the be returned to the user, no need to save to disk
// unless you really want to, if so, use file_put_contents()
$dataForFile="test data to be returned to user in a file";

header('Content-type: application/x-download');
header('Content-Disposition: attachment; filename="'.$myfilename.'"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.strlen($dataForFile));
set_time_limit(0);
echo $dataForFile;
exit;

无需使用fopen()fclose()file_get_contents()file_put_contents()将为您完成所有这些工作,并且已经做了多年。