0

我想知道是否有人知道为什么之后的代码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.";    
    }

谢谢你。:)

4

2 回答 2

1

代码将被正确执行,正如评论中有人指出的那样,问题很可能出在unlink()函数中。我建议您进行快速调试并查看unlink()返回的内容。更具体地说,查看它是否返回 false(如果它无法取消链接文件,它将返回)。

这是我的意思的一个例子

于 2013-11-10T12:21:31.840 回答
0

我在“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.";    
    }
于 2013-11-10T12:49:43.057 回答