2013-03-03 95 views
-2

我有文件保存textarea的問題。我用POST方法發送表單到另一個頁面,然後在下一頁我不能包含文件的textarea內容我不知道是什麼問題。無法使用php將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; 
} 
+1

請提供您的HTML部分(

) – 2013-03-03 07:26:57

+0

'print_r($ _ POST)'看起來是否正確? – dfsq 2013-03-03 07:28:02

+0

並不是說它對於邏輯實際上很重要,但是你正在使用'file_get_contents()'來讀取文件兩次,一次使用'readfile()'來讀取一次。 – leftclickben 2013-03-03 07:30:06

回答

0

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

應該是:

$file = $name.$ext;

至少這就是我必須改變才能讓它在我的服務器上運行。

+0

謝謝..我可以下載文件,但它沒有顯示任何內容。 – user2128334 2013-03-03 08:34:42

+0

任何建議,我怎麼能得到textarea的內容在文件內? – user2128334 2013-03-03 19:56:40

0

沒有看到你的html我不能確定問題是什麼。但是根據我的經驗,當你在服務器端訪問POST變量時遇到問題,那可能是一個簡單的拼寫錯誤。確保表單中的名稱屬性與您的POST變量對齊。只是我的兩分錢。

0

我不知道您的意思是你的代碼,所以,我只是把它改寫

要保存在服務器上的一個文件,你需要這兩條線

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

您需要爲表單添加一個id,然後將表單Id添加到textarea元素。例如:

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

嘗試使用在你的textarea的包裝元素

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

附加包裝

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

你也可以使用包裝:關,硬,軟及物理

在您的數據庫中確保字段txt1被正確定義(即鍵入文本)。