1

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

不知道我在哪里定义了这段代码中的文本区域,或者它是否应该在另一个文件中,或者 html 文件是否应该有 php 的后缀?

下面的欢呼是我对 php.ini 的尝试。

代码

<?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

4 回答 4

2

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

<input name="submit_save" id="submit_save" type="button" value="save" />
于 2013-01-11T13:53:09.380 回答
0

使用 readfile 功能,不要忘记“退出”,以免损坏文件。就像Enve 所说,POST 数组键是 html“名称”。

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

<?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

于 2013-01-11T13:55:31.567 回答
0

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

在阅读您的问题时,(对我来说)不清楚您是想将输入的数据(文本区域的)作为文件还是作为HTML 页面发送到浏览器。你似乎两者都想要,这是不可能的,选择一个。

Fab Sa已经演示了如何从 PHP 向浏览器发送文件,所以我不再讨论这个。

要在HTML 页面的文本区域中填写输入的数据,您必须<textarea>在 HTML 中添加 -tag <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']的情况下使用它(我在示例中省略了以保持清晰)。

于 2013-01-11T14:04:24.103 回答
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>
于 2013-01-11T14:10:48.377 回答