我的情况与之前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
答案 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/xml
或application/json
。安装范围的MarkLogic Server MIME类型映射定义MIME类型,URI扩展和文档格式之间的关联。例如,默认映射关联MIME类型
application/pdf
,“pdf”URI扩展和二进制文档格式。您可以在管理界面的“Mimetypes”部分中查看,更改和扩展映射,也可以使用XQuery函数admin:mimetypes-get和admin:mimetypes-add。