2017-05-18 22 views
-2

この問題は他の問題の問題と異なります。その問題はIF状態に関するものでした。しかし、この問題は、ファイルをダウンロードするのではなく、次のページに印刷しています。この質問を他の人と混同しないでください。Phpテキストボックスの出力がダウンロードする代わりに印刷されます

テキストボックスの出力をダウンロードするスクリプトを作成しました。このスクリプトはローカルサーバー上で正常に動作し、ファイルを正常にダウンロードしますが、ライブサーバーにスクリプトを置くと、ダウンロードファイルは機能しません。 download outputボタンをクリックすると、ファイルをダウンロードする代わりに、ページの出力が次のページに表示されます。

<?php 

    error_reporting(0); 
    $mytext = ""; 

    $txt = preg_replace('/\n+/', "\n", trim($_POST['inputtext'])); 
    $text = explode("\n", $txt); 
    $output = array();   

    if(isset($_POST["submit"]) || isset($_POST["download"])) {   
     for($i=0;$i<count($text);$i++) {  
      $output[] .= trim($text[$i]) . ' AAAAA'.PHP_EOL;  
     }  
    } 

    if(isset($_POST["download"])) { 
     ob_clean(); 
     $filename = "file-name-" .date('mdY-His'). '.txt';      
     $handle = fopen('php://output', "w"); 
     fwrite($handle, implode($output)); 
     fclose($handle); 
     header('Content-Description: File Transfer'); 
     header("Content-type: application/force-download"); 
     header("Content-Type: application/octet-stream charset=utf-8"); 
     header('Content-Disposition: attachment; filename="'.basename($filename).'"'); 
     header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
     header('Expires: 0'); 
     header('Pragma: public'); 
     header('Content-Transfer-Encoding: binary'); 
     header('Content-Length: ' . strlen(implode($output))); 
     readfile($filename); 

     exit();   
    }  
?> 


<form method="POST" action="test.php"> 
    <textarea name="inputtext" rows="10" cols="100" placeholder="Enter Any Text!" required><?php if(!empty($_POST["inputtext"])) { echo $_POST["inputtext"]; } ?></textarea> 
    <br><br> 
    <input type="submit" name="submit" value="Do it!"> 
    <br><br> 
    <p>Output goes here. </p> 
    <textarea name="oputputtext" rows="10" cols="100" ><?php echo implode($output);?></textarea> 
    <input type="submit" name="download" value="Download Output"> 
</form> 
+0

'するerror_reporting(0);' didnのこと」あなたを助ける;キャッチして表示するように設定する必要があります –

+0

あなたはこれをまだ投稿していませんか? http://stackoverflow.com/q/43941102/1415724と回答を受け取った –

+0

[PHPダウンロードボタンが動作していない可能性があります空のファイルを生成]の複製(http://stackoverflow.com/questions/43941102/php-download-button- not-working-generate-empty-file) –

答えて

0

これは私の作品:ここ

http://www.globalitsoft.net/scripts/test.phpは、スクリプトのコードです:

はここに住んでスクリプトを参照してくださいだけでなく

$handle = fopen("file.txt", "w"); 
fwrite($handle, "text1....."); 
fclose($handle); 

header('Content-Type: application/octet-stream'); 
//You dont need to enclose the filename value in quotes 
header('Content-Disposition: attachment; filename='.basename('file.txt')); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize('file.txt')); 
readfile('file.txt'); 
exit; 
+0

これはうまくいきますが、ヘッダーを追加するとこのHTMLタグがある場合それはダウンロードファイルを作成せず、代わりに上記のリンクのように印刷します... –

関連する問題