尝试在MarkLogic中存储二进制内容时使用XDMP-DOCUTF8SEQ

尝试在MarkLogic中存储二进制内容时使用XDMP-DOCUTF8SEQ,marklogic,marklogic-9,Marklogic,Marklogic 9,我的案例与前面提到的略有不同,我正在推送我实际上只想在MarkLogic中存储为二进制的内容。我在稍后的触发器中有代码,它将处理文件的内容。正在讨论的内容上载时带有一个以.txt结尾的URI 使用Java API,我有: BinaryDocumentManager docManager = binaryClient.newBinaryDocumentManager(); BinaryWriteHandle handle = new BytesHandle(content).wit

我的案例与前面提到的略有不同,我正在推送我实际上只想在MarkLogic中存储为二进制的内容。我在稍后的触发器中有代码,它将处理文件的内容。正在讨论的内容上载时带有一个以.txt结尾的URI

使用Java API,我有:

    BinaryDocumentManager docManager = binaryClient.newBinaryDocumentManager();
    BinaryWriteHandle handle = new BytesHandle(content).withFormat(Format.BINARY);
我希望这将绕过UTF-8的要求。我的假设正确吗

 Server Message: XDMP-DOCUTF8SEQ: Invalid UTF-8 escape sequence at  line 1 -- document is not UTF-8 encoded

JavaAPI经过RESTAPI,当您调用以插入文档时,会发生一些自动神奇的处理

如果URI具有已知的文件扩展名,则MIME类型将映射以确定格式。当您使用具有
.txt
文件扩展名的URI时,它假定您正在加载文本文档

如果要使用不以
.txt
文件扩展名结尾的URI,例如
.txt.bin
,则应将其作为
二进制()
节点插入

如果要将文件扩展名为
.txt
的文档作为
binary()
节点插入,则可能需要以不同的方式插入

以下准则适用于为大多数请求指定输入和输出内容类型:

  • 文档内容:依赖于为URI扩展定义的MarkLogic Server MIME类型映射
  • 非文档数据:设置请求内容类型和/或接受标题。在大多数情况下,这意味着将标题设置为
    application/xml
    application/json
安装范围的MarkLogic Server MIME类型映射定义MIME类型、URI扩展和文档格式之间的关联。例如,默认映射将MIME类型
应用程序/pdf
、'pdf'URI扩展和二进制文档格式关联起来。您可以在管理界面的“Mimetypes”部分查看、更改和扩展映射,也可以使用XQuery函数和


内容是文本还是二进制?@MadsHansen内容实际上是文本,但我尝试将其作为二进制插入,以避免索引。我们实际上会处理这些内容并将其粘贴到单独的信封文档中。我想我以前也用MLCP做过类似的事情,它是二进制标志,其中一些内容本来是文本,但被标记为二进制。MLCP内容会通过不同的协议接收吗?MLCP通过XCC协议加载,不使用REST API。如果您不关心文件后缀,将其加载为二进制文件的最简单方法是使用不同的文件扩展名。还有其他解决办法,但那将是最简单的。