コードは実際にサーバー上にファイルを作成し、後で削除されません。コードが失敗した場合は、サーバーに書き込む権限がなかった可能性があります。プロセスでファイルが生成されないように、コードを次のようにトリミングできます。
<?php
if(isset($_POST['text']))
{
header('Content-disposition: attachment; filename=test.txt');
header('Content-type: application/txt');
echo $_POST['text'];
exit; //stop writing
}
?>
<html>
<body>
<form action="" method="post">
<textarea name="text" rows="20" cols="100"></textarea>
<input type="submit" value="submit" name="submit">Download Text</input>
</form>
</body>
</html>
まず、画面に何かを印刷する前にファイルを出力する必要があります。次に、name="submit"
元のコードに追加するのを忘れていました。ここでは使用しませんでしたが、アイデアを得るために含めました。
WordPress コンテキスト:
functions.php
またはプラグイン ファイルにこれを追加します。
function feed_text_download(){
if(isset($_POST['text_to_download']))
{
header('Content-disposition: attachment; filename=test.txt');
header('Content-type: application/txt');
echo $_POST['text_to_download'];
exit; //stop writing
}
}
add_action('after_setup_theme', 'feed_text_download');
フォームをテンプレート ファイルの 1 つに追加するか、投稿の HTML エディターに追加します。
<form action="" method="post">
<textarea name="text_to_download" rows="20" cols="100"></textarea>
<input type="submit" value="submit" name="submit">Download Text</input>
</form>
それは良いはずです:)
編集:ファイル名を追加
HTML:
<form action="" method="post">
<label>Filename:<input type="text" name="filename" /></label>
<label>Text:<textarea cols="100" name="text_to_download" rows="20"></textarea></label>
<input type="submit" name="submit" value="Download Text" />
</form>
PHP:
function feed_text_download() {
if ( isset( $_POST['text_to_download'] ) && isset( $_POST['filename'] ) ) {
$filename = sanitize_file_name( $_POST['filename'] );
header( 'Content-disposition: attachment; filename=' . $filename );
header( 'Content-type: application/txt' );
echo $_POST['text_to_download'];
exit; //stop writing
}
}
add_action( 'after_setup_theme', 'feed_text_download' );