In meiner Haupt-php-Datei, nehme ich ein Array und übergeben Sie es an den Client, ich benutze eckig. Das ist, was mir Echo ...Echo Blocking Header-Funktion aus aufgerufen werden
header('Content-Type: application/json');
echo json_encode($response); //array passed to client
Jetzt in meinem Winkel Controller ich diese Daten über GET-Anfrage nehme ...
$http.get("../server.php").success(function(data) {
$scope.names = data;
});
ich eine Download-Button habe in meinem index.php
, wenn darauf geklickt nimmt der Controller diese Daten und eine POST-Anfrage an meine submit.php
Datei machen, um das Array zu dieser Datei zu senden ...
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
//array converted to a string called $template
$contentFile = fopen("file.txt", "w");
fwrite($contentFile, $template);
fclose($contentFile);
das Array in einen String umgewandelt wird dann geschrieben zehn zur Datei. Bis hier funktioniert alles. Aber der letzte Teil des Codes wird nie aufgerufen ...
header('Pragma: anytextexeptno-cache', true);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);
header("Content-Type: text/plain");
header("Content-Disposition: attachment; filename=\"file.txt\"");
Ich versuche, einen Download zu erzwingen, aber die Header-Funktionen werden ignoriert. Ich denke, das liegt an der ursprünglichen echo
Erklärung im ersten Code-Auszug oben.
Wie kann ich das beheben? Wie kann ich verhindern, dass die Echo-Anweisung die Header-Funktion aufhebt? Muss ich die Seite oder etwas umleiten?
Aber wenn ich es vor der Echo-Anweisung setzen, wird der Force-Download nie aufgerufen, weil ich das Array zu eckigen Echo und dann an das Skript übergeben muss, das eine Datei erstellt und ermöglicht dem Benutzer, die Datei herunterzuladen. Ich denke, wenn ich es vor das Echo-Statement stelle, gäbe es nichts zum Herunterladen, nur eine leere Datei – Bolboa