Wakanda / 4DMobile:向客户展示 BLOB 的内容

Wakanda / 4DMobile: Present contents of BLOB to client

Wakanda 连接到的 4Dv15 数据库中 table 的 BLOB 字段中有一个 PDF。当我从服务器端脚本(在 Wakanda 中)的字段中提取 BLOB 时,它是一个对象:

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

PDF 或二进制数据似乎不在返回的对象中。我想将 BLOB 中的 PDF 交付给客户。你能帮我弄清楚怎么做吗?

谢谢

编辑:这是我尝试使用代码时得到的结果:

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

编辑 2:这是我用来获取 blob 的服务器端代码。我只是想让它在这里工作。 table 中只有一条记录,它在 BLOB 中有一个 PDF。

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

这段代码的结果是上面看到的对象——我没有看到任何证据表明 4D 正在返回 BLOB 的二进制数据,而是只返回该 BLOB 的属性。

从 Wakanda Request Handler 你可以使用 sendChunkedData():

response.sendChunkedData(blob)

或者使用 BLOB API 中的 .copyTo() 将 blob 写入服务器上的文件,并将文件提供给客户端:

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

另一个选项可能是 URL.createObjectURL 静态方法,它可以像这样使用:

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

另请参阅:URL.revokeObjectURL