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 が返されるかどうかを確認します (ファイルのリンク解除に失敗した場合は false になります)。

ここに私が意味するものの例があります

于 2013-11-10T12:21:31.840 に答える
0

「CBroe」の助けを借りてそれを理解しました、ありがとう。

hereconnection_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 に答える