2016-06-20 25 views
0

Wakanda連接的4Dv15數據庫的表格的BLOB字段中有一個PDF。當我拉BLOB從外地一個服務器端腳本(在Wakanda),它是一個對象:Wakanda/4DMobile:將BLOB的內容呈現給客戶端

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

的PDF或二進制數據不會出現在返回的對象。我想將BLOB內部的PDF發送給客戶端。你能幫我弄清楚如何做到這一點?

謝謝

編輯:這是我所得到的,當我嘗試使用的代碼:

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

enter image description here

編輯2:這是我使用的服務器端代碼得到blob。我只是想讓它在這裏工作。表中只有一條記錄,它在BLOB中有一個PDF。

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

這段代碼的結果是看到的物體above--我看不出有什麼證據證明是4D返回BLOB的二進制數據,而是隻BLOB的性能。

回答

1

從Wakanda Request Handler你可以使用sendChunkedData()

response.sendChunkedData(blob) 

還是BLOB寫入使用從BLOB API.copyTo()服務器上的文件和文件服務的客戶:

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

另一個選項可能是URL.createObjectURL靜態方法,可以這樣使用:

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

參見:URL.revokeObjectURL

+0

謝謝您的回覆添。我嘗試使用URL.createObjectURL,但得到了這個錯誤(原始文章中的錯誤圖像)。它上面的行是從4D返回的BLOB的控制檯日誌。 – NAMS

+0

@NAMS這可能與您的錯誤有關:[無法執行'URL'上的'createObjectURL':](http://stackoverflow.com/a/33759534/5971390) - 我稍微更新了我的答案。 –

+0

我看了一下,謝謝你 - 我看到那篇文章中的解決方案是在'createObjectURL()'函數內部使用'new Blob()'構造函數,但是如果我嘗試要做到這一點是實際的二進制數據。當我使用serverside javascript將BLOB字段中的數據拉出來時,它是一個屬性爲'size'和'type'的對象 - 我從來沒有從4D獲取二進制數據。我想知道這是否是我的問題的來源。我感覺從4D返回的數據不包含我需要的二進制數據。我用SS代碼編輯我的帖子來獲取blob。 – NAMS