2016-06-20 28 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