1

我的情况与之前文章中提到的情况略有不同,我正在推送我实际上想在 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
4

1 回答 1

1

Java API 通过 REST API,当您调用/v1/documents PUT插入文档时,会发生一些自动魔术处理。

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

例如,如果您要使用不以.txt文件扩展名结尾的 URI .txt.bin,那么它应该作为binary()节点插入。

如果您想插入带有.txt文件扩展名的文档作为binary()节点,那么您可能需要以不同的方式插入它。

一般内容类型指南

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

  • 文档内容:依赖于为 URI 扩展定义的 MarkLogic Server MIME 类型映射。
  • 非文档数据:设置请求 Content-type 和/或 Accept 标头。在大多数情况下,这意味着将标头设置为application/xmlapplication/json

安装范围的 MarkLogic Server MIME 类型映射定义 MIME 类型、URI 扩展和文档格式之间的关联。例如,默认映射关联 MIME 类型application/pdf、“pdf”URI 扩展名和二进制文档格式。您可以在管理界面的“Mimetypes”部分或使用 XQuery 函数admin:mimetypes-getadmin:mimetypes-add来查看、更改和扩展映射。

于 2018-03-24T14:24:59.423 回答