1

メモリ内にファイルを作成し、ボタンがクリックされたときにブラウザに送信したい。私は次のコードがトリックを行うことを期待していました:

<?php

$content = 'This is supposed to be working... dammit';
$length = strlen($content);

header('Content-Description: File Transfer');
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename=testfile.txt');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . $length);
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
header('Pragma: public');

echo $content;
exit;

?>

代わりに、文字列がエコーされます。私の愚かな初心者のエラーは何ですか?

4

2 に答える 2

4

コンテンツ タイプを変更する必要があります。FF と Chrome でテスト済みです。

<?php 
$content = 'This is supposed to be working... dammit';
$length = strlen($content);

header('Content-Description: File Transfer');
header('Content-Type: text/plain');//<<<<
header('Content-Disposition: attachment; filename=testfile.txt');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . $length);
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
header('Pragma: public');

echo $content;
exit;
?>
于 2012-05-31T14:37:20.297 に答える
0

「実際の出力が送信される前に header() を呼び出す必要があることに注意してください」( c )

于 2016-02-23T10:15:32.027 に答える