0

ヘッダーは頭を悩ませる悪夢だと思います。ユーザーがダウンロードしたファイルは正常に機能します。ただし、xx ファイルが送信されたことを画面に表示したいと思います。ただし、このエコーは送信されたファイル内に配置されるだけです。

完全なダウンロード コードは次のとおりです。

    function download()
{
$orderNo = $_POST['orderNo'];
$lines = file('F:/xamptest/htdocs/UniProject/upload/Amazon output.txt');
$lineCount = count($lines);
if($orderNo>0&&$orderNo<=$lineCount)
{
    $lineEx = explode("\t", $lines[($orderNo-1)]);      
    $file = fopen('Order.txt', 'w');
fwrite($file, $lineEx[8].PHP_EOL .$lineEx[17].PHP_EOL .$lineEx[18].PHP_EOL  .$lineEx[19].PHP_EOL  .$lineEx[20].PHP_EOL  .$lineEx[21].PHP_EOL  .$lineEx[22].PHP_EOL  .$lineEx[23].PHP_EOL);
fclose($file);
$file = 'Order.txt';

ob_end_clean();
header("Cache-Control: private");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");
readfile($file);
echo "Current order, number: ".$orderNo."<br> Has been downloaded";
}
else
{
echo "Please enter a valid Order Number between 1 and ".$lineCount;
}
}

exit(); を使用せずにヘッダーを停止する方法が見つからないようです。それでも、エコーが表示されず、ob_end_clean(); がこれ以上使用されないことを意味します。それ以外の場合、送信されたファイルは空になります。私が考えることができる唯一のことは、エコーを独自の関数に含めることでしたが、ヘッダーと同時に実行されるため、ファイルに配置されます。

助けてくれてどうもありがとう - トム。

4

1 に答える 1