【问题标题】:Can't save textarea to file using php?无法使用 php 将 textarea 保存到文件?
【发布时间】:2013-03-03 07:24:12
【问题描述】:

我在将文本区域保存到文件时遇到问题。我使用 POST 方法将表单发送到另一页,然后在下一页我无法将 textarea 内容包含在文件中我不确定是什么问题。

你有什么想法吗?

这是两个页面: 第 1 页:

<!DOCTYPE HTML>
<html>
<head>
    <title>Save</title>
</head>

<body>
    <form action="page2.php" method="post">
    <span>name:</span>
    <input type="text" name="name"><br>
    <span>file extension: </span>
    <select name="ext" id="ext">            
        <option value=".txt">.txt</option>
        <option value=".doc">.doc</option>          
    </select>
    <textarea name="txt1" id="txt1" cols="15" rows="10"></textarea>
    <br>
          <input type="submit" name="submit"  id="submit" value="Save">
          </form>
          <br>
</body>

  </html>

-page2.php

$txt1 = $_POST['txt1']; //textarea
$name = $_POST['name'];
$ext = $_POST['ext'];  //choose from multiple extensions
if ($ext == '.txt')    // In case if I want to add more than extension.
{   
    $file = "'. $name$ext.'" ;
    $output = "$txt1";
    file_put_contents($file, $output);
    $text = file_get_contents($file);

    header("Content-Description: File Transfer");
    header("Content-Type: application/text/plain");
    header("Content-Disposition: attachment; filename=".basename($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}

【问题讨论】:

  • 请提供您的 html 部分 (
    )
  • print_r($_POST) 在您看来正确吗?
  • 这对逻辑实际上并不重要,但您正在读取文件两次,一次使用file_get_contents(),一次使用readfile()
  • 我添加了html表单希望现在清楚了。

标签: php html textarea


【解决方案1】:

没有看到您的 html,我无法确定问题所在。但根据我的经验,当您无法在服务器端访问 POST 变量时,这可能是一个简单的拼写错误。确保表单中的名称属性与您的 POST 变量对齐。只是我的两分钱。

【讨论】:

    【解决方案2】:

    我不知道你的代码是什么意思,所以我只是重写它

    要在服务器上保存文件,您需要这两行

    $name = basename($_POST['name']).'.txt';
    file_put_contents($name, $_POST['txt1']);
    

    【讨论】:

      【解决方案3】:

      $file = "'. $name$ext.'";

      应该是:

      $file = $name.$ext;

      至少这是我必须改变的,才能让它在我的服务器上工作。

      【讨论】:

      • 谢谢..我可以下载文件,但里面没有内容。
      • 任何建议,我怎样才能让 textarea 的内容在文件中?
      【解决方案4】:

      你需要给表单添加一个id,然后将表单Id添加到textarea元素中。例如:

      <form action="page2.php" method="post" id="myform">
          <textarea name="txt1" id="txt1" cols="15" rows="10" form="myform"></textarea>
      

      【讨论】:

        【解决方案5】:

        尝试在你的文本区域中使用 wrap 元素

        <textarea name="txt1" id="txt1" cols="15" rows="10"></textarea>
        

        添加包装

        <textarea name="txt1" id="txt1" cols="15" rows="10" wrap="virtual"></textarea>
        

        您还可以使用 wrap: off、hard、soft 和physical

        确保在您的数据库中正确定义字段 txt1(即键入文本)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多