2016-09-16 3 views
0

aufheben Ich mache ein Excel-Plugin für mein Projekt, ich möchte die Excel-Datei nach dem Abschluss des Downloads durch den Benutzer aufheben oder durch den Benutzer im Popup-Fenster für das Abbrechen herunterladen.Wie man die Excel-Datei nach dem Download in CakePHP 3.2

Ich habe den Unlink-Code versucht, Dinge zu erledigen, aber da es die Antwort gibt, bin ich etwas verwirrt, wie man es macht. Unten habe ich einen Teil des Codes angehängt. Jeder Vorschlag wird sehr geschätzt.

$filename = time() . "-ocma-sales-report-" . date("Y-m-d") . ".xlsx"; //'.time() . '-ocma-sales-report-' . date("Y-m-d").'.xls' 
         $objWriter->save("temp_excel/$filename"); 

         $filePath = 'temp_excel/' . $filename; 
         $this->response->file($filePath, ['download' => TRUE, 'name' => $filename]); 

         return $this->response; 
         //unlink($filename); 

         exit; 
+1

Ich kann Ihnen nicht sagen, wie es in CakePHP zu tun, sondern bietet PHP mehrere Tools temporäre Dateien zu erzeugen und sie automatisch entfernt bekommen, aus dem 'tmpfile()' Funktion zum 'php: // temp' Stream-Wrapper. Wenn Sie temporäre Dateien selbst bearbeiten, müssen Sie einen Bereinigungsprozess einplanen, da das Löschen früher oder später fehlschlägt. –

+0

Ok @ ÁlvaroGonzález Ich habe es. Danke – sradha

Antwort

0

Sie können FileSystem/File-Klasse zum Erstellen, Ändern und Löschen von Datei verwenden. Auch für die Download-Datei müssen Sie einen einfachen PHP-Code verwenden, weil $this->response->file($filePath, ['download' => TRUE, 'name' => $filename]); so keine Operation nach der Ausführung der Funktion erlaubt.

ob_clean(); 

$filePath = 'temp_excel/' . $filename; 
$size = filesize($filePath); 

header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename=' . $filename); 
header('Content-Transfer-Encoding: binary'); 
header('Connection: Keep-Alive'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public'); 
header('Content-Length: ' . $size); 
readfile($filePath); 

$file = new \Cake\Filesystem\File($filePath); 
$file->delete(); 
exit(); 
+0

Ich habe Code –

+0

geändert Ok ich bin checking. – sradha

+0

Kann ich wissen woher du kommst? –

Verwandte Themen