XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Serveradministration und serverseitige Scripte (http://xhtmlforum.de/forumdisplay.php?f=80)
-   -   Erzeugen und Download von JSON-file fehlerhaft (http://xhtmlforum.de/showthread.php?t=74091)

Iago2 17.05.2020 15:12

Erzeugen und Download von JSON-file fehlerhaft
 
Hallo,

Ich erzeuge eine JSON-Datei und möchte diese mit dem Browser herunterladen. Das Erzeugen funktioniert, aber der Download nicht. Ich habe den folgenden Ansatz:

PHP-Code:

function createFile() {
   
    
$date date("d-m-h-i-s");
    
$dir "./JSON/";

    
$file $dir.'CP'.$date.'.json';
    
    
$info '[{"Hello":"JSON"}]';

    
file_put_contents($file$infoFILE_APPEND);

    return 
$file;

    }

    function 
downloadFile($file) {

        if (
file_exists($file)) {
    
header('Content-Description: File Transfer');
    
header('Content-Type: application/octet-stream');
    
header('Content-Disposition: attachment; filename="'.basename($file).'"');
    
header('Expires: 0');
    
header('Cache-Control: must-revalidate');
    
header('Pragma: public');
    
header('Content-Length: ' filesize($file));
    
readfile($file);
    exit;
    }
    


Dann:
PHP-Code:

 downloadFile(createFile()); 


Leider bekomme ich auch keine Fehlermeldung hier. Kann es sein, dass ich $file nicht richtig übergebe? Für eine Hilfestellung wäre ich dankbar.

protonenbeschleuniger 18.05.2020 17:00

Zitat:

Zitat von Iago2 (Beitrag 554245)
Leider bekomme ich auch keine Fehlermeldung hier.

D.h. du hast keine Informationen in der Entwicklerkonsole? Keine Fehlermeldung? Keine Übertragung im Netzwerk?
Das klingt merkwürdig.

Iago2 18.05.2020 19:14

Zitat:

Zitat von protonenbeschleuniger (Beitrag 554249)
D.h. du hast keine Informationen in der Entwicklerkonsole? Keine Fehlermeldung? Keine Übertragung im Netzwerk?
Das klingt merkwürdig.

Nein. Ich rufe die Funktion über AJAX auf. Normalerweise sehe ich in console.log dann die Fehlermeldung. (php error_reporting ist aktiv). downloadFile($file) wird definitv auch ausgeführt.

Benötigen diese Header-Anweisungen nicht einen reload der Seite??

protonenbeschleuniger 18.05.2020 19:22

und was sagt der Netzwerkreiter (CTRL+SHIFT+Q)

Iago2 18.05.2020 20:21

general:
Request URL: http://localhost/cpicks/actions.php?...createLiteJson
Request Method: POST
Status Code: 200 OK
Remote Address: [::1]:80
Referrer Policy: no-referrer-when-downgrade

response headers
Cache-Control: must-revalidate
Connection: Keep-Alive
Content-Description: File Transfer
Content-Disposition: attachment; filename="CP18-05-07-15-04.json"
Content-Length: 18
Content-Type: application/octet-stream
Date: Mon, 18 May 2020 17:15:04 GMT
Expires: 0
Keep-Alive: timeout=5, max=98
Pragma: public
Server: Apache/2.4.43 (Win64) OpenSSL/1.1.1f PHP/7.4.4
X-Powered-By: PHP/7.4.4

request headers
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
Connection: keep-alive
Content-Length: 12
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Cookie: PHPSESSID=79k9ngj1uecogbo4151ivl59j4
Host: localhost
Origin: http://localhost
Referer: http://localhost/cpicks/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36
X-Requested-With: XMLHttpRequest

query string parameters
action: createLiteJson

form data
id=undefined

protonenbeschleuniger 18.05.2020 20:42

Dann kommt alles an. Die Datei ist 18 Byte gross?

Iago2 19.05.2020 14:35

Zitat:

Zitat von protonenbeschleuniger (Beitrag 554254)
Dann kommt alles an. Die Datei ist 18 Byte gross?

Ist das ne Frage ob die Datei 18byte gross ist?
Wo kommt das an? Warum wird kein Download Dialog angezeigt?

cloned 19.05.2020 15:05

Ja, das ist eine Frage ob die Datei, die du erwartest 18 Byte groß ist.

Auch nett, dass du einen Teil von dem Netzwerktab hier kopiert hast, aber da gibt es mehrere Tabs (Zumindest bei Chrome, FF wohl auch)

Da siehst du genau was der Server zurückliefert und kannst dir auch eine Vorschau anzeigen lassen. Was hier wohl erwartet wurde: Dass du dir die Sachen anschaust und uns sagst ob auch wirklich alles so ankommt wie es soll.

Wenn alles ankommt wie es soll und kein download Dialog angezeigt wird kann man dort einmal ansetzen. Kommt es nicht so zurück wie es soll dann muss das php Skript angepasst werden.

Iago2 20.05.2020 19:18

Mit refresh der Seite funzt es, leider mit AJAX nicht.
Hilf wohl nix die Metrik zu analysieren.

Haha, jetzt schreibst mir das hier in die Datei an den Anfang:
./JSON/CP20-05-06-31-07.json is created

Wer braucht das?

protonenbeschleuniger 20.05.2020 22:05

Ajax?
Bis jetzt ging es um Serverseigien Code. Die Frage bisher was, ob das im Browser ankommt das ist was du erwartest. Wenn es beim normalen Aufruf funktioniert, dann liegt es wohl am Ajax Code, den kennen wir aber nicht.


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:15 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2020, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2020