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
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