MarkLogic REST API扩展:媒体文件GET服务Content-Type设置异常求助
解决MarkLogic媒体文件GET服务Content-Type异常问题
针对你遇到的问题,这里提供几个可行的排查和解决方向:
确认属性读取的准确性
先打印$propertiesHtml的完整内容,检查实际存储的meta标签结构是否符合预期。比如xdmp:document-filter生成的content-type可能是首字母大写的Content-Type,而非小写,导致你的XPath无法匹配到对应属性。你可以调整XPath为:let $content-type := $propertiesHtml/*/*:meta[@name='Content-Type']/@content/string()同时确认属性的命名空间是否正确,若
html属性不在http://www.w3.org/1999/xhtml命名空间下,可尝试直接用xdmp:document-property($uri, xs:QName("html"))获取属性内容后再解析。直接设置响应头而非依赖output-type
对于二进制媒体文件,仅修改$context的output-type可能无法覆盖MarkLogic默认的响应类型处理。建议直接使用response:set-header方法设置Content-Type:let $_ := response:set-header("Content-Type", $content-type)确保这行代码在输出文件内容(比如
xdmp:binary-get($uri))之前执行,顺序错误可能导致头信息被覆盖。检查二进制文件的存储格式
确认上传的媒体文件是以二进制格式存储在MarkLogic中,而非文本格式。若存储为文本,可能触发默认的内容类型推断,导致application/x-unknown-content-type。可以用xdmp:document-kind($uri)验证文件类型,若为text,需重新以二进制方式上传。
内容的提问来源于stack exchange,提问作者Marc Messéant
相关产品推荐
相关产品推荐

