PHP不会将文本区域发送到文件

时间:2013-01-11 13:48:59

标签: php html scripting

我现在围绕Jquery,但想要将文本区域保存到txt文件。最终目标是能够将文本文件上传到同一个地方。我的代码中缺少什么?

不知道我在这段代码中定义textarea的位置,或者它是否应该在另一个文件中,或者html文件的后缀是php?

下面的干杯是我对php的尝试。

CODE

<?php
    if(isset($_POST['submit_save'])) {
        $file = "output.txt";
        $output = $_POST['output_str'];
        file_put_contents($file, $output);
        $text = file_get_contents($file);

        header("Content-type: application/text");
        header("Content-Disposition: attachment; filename=\"$file\"");
        echo $text; 
    }  
    else 
    {    
        $_POST['output_str'] = "";
    }
?>

</head>

<body>
    <input id="submit_save" type="button" value="save" />
    </br></br></br>
    <div id="opt"></div>
</body>
</html>

4 个答案:

答案 0 :(得分:2)

$_POST是名字。您需要将名称添加到#submit_save

<input name="submit_save" id="submit_save" type="button" value="save" />

答案 1 :(得分:0)

使用readfile函数,不要忘记“退出”后不要破坏文件。与Enve said类似,POST数组键是html“name”。

这是手册页中的一个例子:

<?php
$file = 'monkey.gif';

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

来源:http://php.net/manual/en/function.readfile.php

答案 2 :(得分:0)

您的PHP脚本在您的网络服务器上运行,而不是在浏览器中运行。脚本的结果就是浏览器收到的内容!

在阅读您的问题时,(我)是否要将输入的数据(文本区域)作为文件或<作为< strong> HTML页面。你似乎想要两个,这是不可能的,选择一个。

Fab Sa已经演示了如何从PHP向浏览器发送文件,因此我不会进一步讨论。

要在 HTML网页的文本区域中填写输入的数据,您必须在HTML <textarea>中添加<form> - 标记。像这样:

<form method="post" action="<?= $PHP_SELF ?>">
<textarea name="output_str"><?= $_POST['output_str'] ?></textarea>
<input id="submit_save" name="submit_save" type="button" value="save" />
</form>

删除代码的这部分(部分将数据作为文件发送):

    $text = file_get_contents($file);
    header("Content-type: application/text");
    header("Content-Disposition: attachment; filename=\"$file\"");
    echo $text; 

注意:出于安全原因,您应该从不使用$_POST['output_str']而不使用sanitizing(我在示例中省略了这一点以保持清晰)。

答案 3 :(得分:0)

我认为你正在尝试这样的事情。

<?php

  if(isset($_POST['textfield'])) {
    $file = "output.txt";
    $output = htmlspecialchars ($_POST['textfield'] );
    file_put_contents($file, $output );
    $text = file_get_contents($file);

    header("Content-type: application/text");
    header("Content-Disposition: attachment; filename=\"$file\"");
    echo $text;
    exit;

  }
?>

<html>
<head>
    <title>Your app</title>
</head>

<body>
  <form method="POST">
    <textarea name="textfield"></textarea>
    <input id="submit_save" type="button" value="save" />
  </form>

</body>
</html>