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

时间:2018-03-23 16:09:14

标签: marklogic marklogic-9

我的情况与之前post中提到的情况略有不同,我推送的内容实际上我只想在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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

  

General Content Type Guidelines

     

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

     
      
  • 文档内容:依赖于为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