2016-01-28 1 views
0

J'essaie de générer et de télécharger un fichier texte via le framework Kohana, mais il ajoute une ligne supérieure vide et une indentation d'onglet pour la deuxième ligne commençant par le contenu. voici mon code:Espacement des lignes supérieures vides dans le fichier texte

<?php 
class Controller_Add extends Controller_Siteadmin 
{ 
    public function __construct(Request $request, Response $response) 
    { 
     parent::__construct($request, $response); 
    } 
    public function action_sample() 
    { 
     $content ="hello this is sample text file"; 
     $filename = "yourfile.txt"; 
     $f = fopen($filename, 'w'); 
     fwrite($f, $content); 
     fclose($f); 
     header("Cache-Control: public"); 
     header("Content-Description: File Transfer"); 
     header("Content-Length: ". filesize("$filename").";"); 
     header("Content-Disposition: attachment; filename=$filename"); 
     header("Content-Type: application/octet-stream; "); 
     header("Content-Transfer-Encoding: binary"); 
     readfile($filename); 
    } 
} 
?> 

et la sortie:

enter image description here

Le problème est pas là si je crée un fichier PHP dédié, le problème ne vient que lorsque j'ai essayé cela avec le cadre Kohana 3.2.2.

Pour votre information: J'ai même enlevé tout espacement dans le index.php, database.php et bootstrap.php

Ce que je besoin est sans la ligne supérieure vide et la deuxième ligne de retrait, quelqu'un pouvait me aider à surmonter cette problème?

+0

Avez-vous essayé avec 'Content-Type: text/plain'? – trincot

+0

vient de le faire, mais pas de chance. –

+0

Avez-vous un espace blanc après une balise fermante '?>' Ou avant une balise ' trincot

Répondre

1

Pour ces fins Kohana a send_file méthode dans Response objet.

Cette méthode est avaliable de $this->response propriété d'objet Controller comme:

$this->response->send_file(); 

I votre cas pour télécharger le contenu généré sous forme de fichier texte que vous pouvez utiliser le code followind dans les Controller:

$this->response 
    ->body('hello this is sample text file') 
    ->send_file(true, 'yourfile.txt');