2017-02-15 1 views
0

Ich habe eine Methode, die versucht, eine XLSX-Datei (Excel 2007) zu senden, die auf dem Server vorhanden ist. Die xlsx-Datei ist in Ordnung, ich kann sie (lokal) vom Server öffnen.Binäre Datei (Excel-Datei) an den Browser in CakePHP senden 3.3

Wenn die Datei jedoch von der Clientseite heruntergeladen wird, wird sie beschädigt. Hier ist die Methode:

public function exportToExcel() 
    { 
     $fileName = ROOT . '/files/xls' . DS . 'assessors.xlsx'; 

     $this->autoRender = false; 

     $assessors = $this->StaAssessors->find('all'); 

     $this->Utils->exportToExcel($fileName, $assessors); 

     $this->response->type('xlsx'); 

     $this->response->file($fileName, ['download' => true ]); 

     return($this->response); 
    } 

Ich denke, das Problem ist, dass die Excel-Datei komprimiert ist, und meine Methode etwas nicht korrekt verarbeitet die Binärdatei an den Browser gesendet werden.

Unten habe ich die Header angehängt, wie sie vom Browser empfangen werden.

enter image description here

Gibt es eine Sache, die ich fehle?

+0

Sie müssen einige Debugging (und zeigen Sie die Ergebnisse), ohne weitere Informationen können alle Menschen tun, ist im Dunkeln, was nicht sehr hilfreich ist. Welche Header werden beim Anfordern der Datei gesendet (überprüfen Sie die Netzwerkkonsole Ihres Browsers)? Wie genau unterscheidet sich der heruntergeladene Inhalt vom Inhalt auf dem Server? – ndm

Antwort

0

Gelöst, dass ob_clean() hinzugefügt wurde, bevor die $ this-> Antwort zurückgegeben wurde.

+1

Wenn das Ihr Problem verschwinden lässt, dann verstecken Sie nur das eigentliche Problem, dass Daten ausgegeben werden, bevor die Antwort an den Browser gesendet wird. Sie sollten versuchen, herauszufinden, wo das passiert, und das Problem in seinem Kern beheben. – ndm

+0

danke für den Tipp. Ich werde weitere Nachforschungen anstellen. – user1077915

Verwandte Themen