如何使用 ML Xquery 流传输大型二进制内容 RESTful API
How to streaming delivery large binary content with ML Xquery RESTful API
下面是一篇博客post,把使用方法ML nodejs api to handle stream binary file拿出来了。
我希望使用 ML XQuery RESTful API 代码示例来执行相同的操作。
目前我在 return WEB API 响应之前使用 xs:base64Binary(xs:hexBinary(fn:doc($documentUri)))
map:put($responseObj, 'document', $pdfData)
。
以上解决方案适用于小型二进制文件。但是如果二进制文件很大,可能会发生超时错误。我相信 xs:base64Binary
可能需要先将所有二进制内容加载到内存中。这可能是问题的瓶颈。
目前我们不使用 ML Nodejs。如何使用 ML XQuery RESTful API?
MarkLogic 将从模块数据库(静态内容)中分块二进制内容。
如果内容在内容数据库中,您需要将其分块到您的应用程序代码中。这里有一个示例:https://docs.marklogic.com/guide/app-dev/binaries#id_76113
另外,为了参考您将其加载到内存中的想法,阅读二进制内容的三种存储方式可能会有用。内存和缓存要求因方法而异。很好的背景阅读:https://docs.marklogic.com/guide/app-dev/binaries#id_93203
下面是一篇博客post,把使用方法ML nodejs api to handle stream binary file拿出来了。
我希望使用 ML XQuery RESTful API 代码示例来执行相同的操作。
目前我在 return WEB API 响应之前使用 xs:base64Binary(xs:hexBinary(fn:doc($documentUri)))
map:put($responseObj, 'document', $pdfData)
。
以上解决方案适用于小型二进制文件。但是如果二进制文件很大,可能会发生超时错误。我相信 xs:base64Binary
可能需要先将所有二进制内容加载到内存中。这可能是问题的瓶颈。
目前我们不使用 ML Nodejs。如何使用 ML XQuery RESTful API?
MarkLogic 将从模块数据库(静态内容)中分块二进制内容。
如果内容在内容数据库中,您需要将其分块到您的应用程序代码中。这里有一个示例:https://docs.marklogic.com/guide/app-dev/binaries#id_76113
另外,为了参考您将其加载到内存中的想法,阅读二进制内容的三种存储方式可能会有用。内存和缓存要求因方法而异。很好的背景阅读:https://docs.marklogic.com/guide/app-dev/binaries#id_93203