0

HTMLをファイルに書き込んでファイルダイアログボックスを開こうとしています

ユーザーが保存するため

しかし、何も起こらず、エラーはありません

何か案は ?

ありがとうございました

これは私のコードです

<?php
    $css=$_POST['css'];
    $html=$_POST['html'];

      $handle = fopen("file.txt", "w");
        fwrite($handle, $html);
        fclose($handle);

        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($handle));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($handle));
        ob_clean();
        flush();
        readfile($handle);
        exit;

    ?>
4

2 に答える 2

0

まず、ファイルハンドルとファイル名という 2 つのものがコードに混在しています。fopen、前者fwritefclose連携します。basenamefilesizeそしてreadfile- 後者で。ファイル名を固定文字列として持っているように見えるので、次のように書くことができます:

$filename = "./file.txt";
$handle = fopen($filename, "w");
fwrite($handle, $html);
fclose($handle);

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment;filename=' . basename($filename));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filename));
ob_clean();
flush();
readfile($filename);

第二に、コードの目的がわからないことを認めます。ダウンロードとしてユーザーに入力を返す必要があるようです。ファイルを作成してから書き込み、その後すぐに読み戻す必要はありません。これは...

header('Content-Length: ' . strlen($html));
echo $html;

... で十分です。ファイルを読み返す必要はありません。その内容をエコーするだけで十分です (そして、内容とfwrite('w')まったく同じ$htmlです)。

于 2013-09-21T17:45:12.967 に答える
0

ここでファイル オブジェクトを渡すことはできません。これは有効なファイル名でなければなりません

    header('Content-Disposition: attachment; filename=file.txt'));
于 2013-09-21T17:40:55.347 に答える