0

サーバー上の特定のファイルがダウンロードされるように、次のコードを使用しようとしています。

$file = 'upload/Order.txt';
header("Pragma: public", true);
header("Expires: 0"); // set expiration time
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment; filename="basename.$file);
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));

私の場合は「Order.txt」というファイルがブラウザにダウンロードされますが、空白で、どこからともなくこのファイルを作成しているだけです。$file の「upload/」パス部分では何もしません。

助けてくれてありがとう、私はヘッダーが本当に混乱していると思います.なぜ「ダウンロード($ file)」だけを持てないのかは私を超えています.

編集:私は何日も問題に苦労し、最終的にここで質問することに決め、それを自分で修正した直後に.

ファイルの場所を PHP スクリプトと同じになるように変更しましたが、それらを別々にして動作させる方法を知りたいです。私も追加しました:

readfile($file);

これら2つの変更を変更すると、機能しません。

また、それをスリムに裏打ちし、新しいコード:

$file = 'Order.txt';
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");
readfile($file);
4

2 に答える 2

0

この行を変更してみてください:

header("Content-Disposition: attachment; filename='".basename($file)."';");
于 2013-11-03T21:35:36.613 に答える
0

ヘッダーの後にファイルの内容を stdout に出力する必要があります。

$file = 'upload/Order.txt';
header("Pragma: public", true);
header("Expires: 0"); // set expiration time
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment; filename=".basename($file));
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));
$handle = fopen($file, "r");        
$contents = fread($handle, filesize($file));
fclose($handle);
echo $contents;
于 2013-11-03T21:35:36.937 に答える