我想知道是否有人知道为什么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.";
}
谢谢。 :)
答案 0 :(得分:1)
代码将被正确执行,正如有人在评论中指出的那样,问题很可能出现在unlink()
函数中。我建议你做一个快速调试,看看unlink()
返回什么。更特别的是,看看它是否返回false(如果它无法取消链接文件,它将会出现)。
答案 1 :(得分:0)
我在'CBroe'的帮助下想出来了,谢谢。
我还添加了connection_abort()
行,我发现了here。
以下是更新后的代码:
$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.";
}