2016-06-20 4 views
0

Es gibt eine PDF in einem BLOB-Feld einer Tabelle in der 4Dv15-Datenbank, mit der Wakanda verbunden ist. Als ich das BLOB aus dem Feld in einem serverseitigen Skript (in Wakanda) ziehe, ist es ein Ziel:Wakanda/4DMobile: Vorhandene Inhalte von BLOB zu Client

{'size': 12915, 'type': 'application/octet-stream'}

Die PDF-oder Binär-Daten erscheinen nicht in dem zurückgegebene Objekt zu sein. Ich möchte die PDF im BLOB an den Client liefern. Kannst du mir helfen, herauszufinden, wie das geht?

Danke

Edit: Das ist es, was ich bekomme, wenn ich den Code versuchen Sie es mit:

console.log(blob); var objectUrl = URL.createObjectURL(blob); window.open(objectUrl);

enter image description here

Edit 2: Dies ist die serverseitige Code verwende ich zu Hol den Blob. Ich versuche nur, es hier zum Laufen zu bringen. Es gibt nur einen Datensatz in der Tabelle und es hat eine PDF im BLOB.

var reportCollection = ds.ReportLog.all(); var blob = reportCollection[0].ReportBlob;

Das Ergebnis dieses Codes ist das Objekt gesehen above-- ich keine Beweise dafür sehen, dass 4D die binären Daten des BLOB zurückkehrt, sondern nur die Eigenschaften dieses BLOB.

Antwort

1

Aus Wakanda Request Handler könnten Sie sendChunkedData() verwenden:

response.sendChunkedData(blob) 

Oder das Blob in eine Datei auf dem Server schreiben mit .copyTo() aus dem BLOB API und dienen dazu, die Datei an den Client:

var myFile = new File (outputFolder + filename) 
blob.copyTo(myFile) 

Eine andere Option kann die statische Methode URL.createObjectURL sein, die wie folgt verwendet werden könnte:

var objectUrl = window.URL.createObjectURL(blob) 
window.open(objectUrl) 

Siehe auch: URL.revokeObjectURL

+0

Vielen Dank für Ihre Antwort Tim. Ich habe versucht, die URL.createObjectURL, aber habe diesen Fehler (Bild des Fehlers im ursprünglichen Post). Die darüber liegende Zeile ist ein Konsolenprotokoll des von 4D zurückgegebenen BLOBs. – NAMS

+0

@NAMS Dies kann mit Ihrem Fehler zusammenhängen: [Fehler beim Ausführen von 'createObjectURL' in 'URL':] (http://Stackoverflow.com/a/33759534/5971390) - Ich habe meine Antwort leicht aktualisiert. –

+0

Ich schaute, danke - ich sehe, dass die Lösung in diesem Beitrag war, den 'neuen Blob()' -Konstruktor innerhalb der 'createObjectURL()' -Funktion zu verwenden, aber eine Sache, die ich vermisse, wenn ich es versuchen würde um dies zu tun, sind die tatsächlichen binären Daten. Wenn ich die Daten im BLOB-Feld mit serverseitigem Javascript abrufe, handelt es sich um ein Objekt mit den Eigenschaften 'size' und' type' - niemals bekomme ich tatsächlich binäre Daten von 4D. Ich frage mich, ob dies eine Quelle meines Problems ist. Ich habe das Gefühl, dass die von 4D zurückgegebenen Daten nicht die benötigten Binärdaten enthalten. Ich habe meinen Post mit dem SS-Code bearbeitet, um den Blob zu erhalten. – NAMS