我想知道是否有人知道为什么header(Content-disposition: ...)
后的代码不会运行?它写入并下载文件,但它不会运行unlink()
行...
此代码最初位于其他几个 if 语句中。
这是代码:
$form1Array = array($_POST["namn"], $_POST["stad"]);
$form1String = serialize($form1Array);
$form1Fil = $_POST["namn"].".txt";
$midMappe = "midlertidig''";
$fo_form1Fil = fopen($midMappe.$form1Fil, "w");
//
if (fwrite($fo_form1Fil, $form1String)) {
ignore_user_abort(true);
//
header("Content-type: text/plain");
header("Content-disposition: attachment; filename=".$form1Fil);
//
unlink($midMappe.$form1Fil);
} else {
echo "Could not save the file for download.";
}
谢谢。:)
代码将正确执行,正如有人在注释中指出的那样,问题很可能出在unlink()
函数上。我建议您进行快速调试,看看unlink()
返回的内容。更具体地说,查看它是否返回 false(如果它无法取消链接文件,它将返回)。
这是我的意思的一个例子
我在"CBroe"的帮助下想通了,谢谢。
我还添加了一条connection_abort()
行,我在这里找到了。
以下是更新的代码:
$form1Array = array($_POST["namn"], $_POST["stad"]);
$form1String = serialize($form1Array);
$form1Fil = $_POST["namn"].".txt";
$midMappe = "midlertidig''";
$fo_form1Fil = fopen($midMappe.$form1Fil, "w");
//
if (fwrite($fo_form1Fil, $form1String)) {
fclose($fo_form1Fil); // ** Here is the updated/added line 1 **
//
ignore_user_abort(true);
//
header("Content-type: text/plain");
header("Content-disposition: attachment; filename=".$form1Fil);
//
if (connection_abort()) { // ** Here is the updated/added line 2 **
unlink($midMappe.$form1Fil);
} else {
unlink($midMappe.$form1Fil);
}
} else {
echo "Could not save the file for download.";
}