Das Streaming der PDF-Datei vom Knotenserver nach dem Zufallsprinzip zeigt nur die Binärdaten im Browser an

8

Ich habe eine Knoten-App (speziell Segel App), die PDF-Datei dient. Mein Code für die Serving-Datei sieht so aus.

%Vor%

Und wenn ich die URL für pdf ansehe, macht es die pdf fein. Aber manchmal werden nur die Binärdaten von PDF im Browser wiedergegeben, wie unten angegeben.

%Vor%

Ich bin nicht in der Lage herauszufinden, warum es versäumt, die PDF-Datei nur zufällig zu liefern. Ist es Chromsache? oder fehle ich etwas?

    
kxhitiz 11.05.2016, 21:23
quelle

5 Antworten

2

Dies hier in der Hoffnung zu belassen, dass es jemandem hilft - ich hatte schon mehrmals ähnliche Probleme und habe eines von zwei Dingen:

  1. Sie verwenden eine HTTP-Verbindung zu einer HTTPS-Zustellung (dies ist typisch für Websockets, wo Sie :443 zusätzlich zu wss angeben müssen.
  2. Der Kodierungsparameter request dient als Klartext anstelle von Objekten. Dies geschieht, indem encoding wie folgt auf null gesetzt wird: request({url: myUrl, encoding: null}) .
  3. Inhaltstypen in den Kopfzeilen - Lenken Sie dies ab, da es offensichtlich ist / andere haben dies bereits substantiell genug abgedeckt:)

Ich bin mir ziemlich sicher, dass Sie wegen (2) damit konfrontiert werden. Schauen Sie sich Ссылка

an
  

encoding - Codierung, die bei setEncoding der Antwortdaten verwendet werden soll. Ob   Null, der Körper wird als Puffer zurückgegeben. Alles andere (einschließlich der   Standardwert von undefined) wird als Kodierungsparameter übergeben   toString () (was bedeutet, dass dies standardmäßig utf8 ist). (Hinweis: wenn   Du erwartest binäre Daten, solltest du encoding: null setzen.)

Da die oben genannten Vorschläge für Sie nicht funktionierten, würden Sie gerne folgende Forensik sehen:

  • Sind Dateien mit einer bestimmten Größe fehlerhaft? Ist das ein Pufferproblem auf einer bestimmten Ebene?
  • Führt das Vorhandensein eines bestimmten Zeichens in der Datei dazu, weil es einen Teil Ihres Skripts unterbricht?
  • Sind die Metadatenabschnitte und Dateiendungen in einer fehlgeschlagenen und einer erfolgreichen Datei identisch? Wie eine Mediendatei oben signiert ist und wie sie unten abgeschnitten wird, kann sich stark auf die Interpretation auswirken.
Angad 22.05.2016 14:02
quelle
1

Sie müssen möglicherweise den Inhaltstypheader application/pdf in die Knotenantwort aufnehmen, um dem Empfänger mitzuteilen, dass das, was er empfängt, eine PDF ist. Einige Browser sind intelligent genug, um den Inhaltstyp aus dem Datenstrom zu bestimmen, aber Sie können nicht davon ausgehen, dass dies immer der Fall ist.

    
Ownaginatious 11.05.2016 21:29
quelle
1

Wenn Chrome die PDF-Datei als Text herunterlädt, würde ich das Ende der Datei überprüfen. Die PDF-Datei enthält am Ende die obligatorische Tabelle xref . So sollte jede gültige PDF-Datei mit der folgenden Sequenz enden: %EOF . Wenn nicht, wurde die Anfrage unterbrochen oder etwas schief gelaufen.

    
Eugene M 07.06.2016 12:48
quelle
0

Sie benötigen auch HTTP-Header:

%Vor%

Und

%Vor%

Haben Sie versucht, die auf der Festplatte befindlichen Binärdateien zu speichern und manuell mit dem PDF-Reader zu öffnen? Es könnte beschädigt sein.

    
Mitja Gustin 21.05.2016 12:42
quelle
0

Ich würde vorschlagen, beides zu versuchen:

Content-Type: application/pdf Content-Disposition: attachment; filename="somefilename.pdf"

(oder Mime-Typ auf andere Arten steuern: Ссылка )

    
jaygeek 10.06.2016 01:06
quelle

Tags und Links