我想写一个xquery下载&将上传的文档保存在Marklogic Server中。我怎么能这样做?
答案 0 :(得分:3)
请参阅http://developer.marklogic.com/pubs/5.0/apidocs/AppServerBuiltins.html#xdmp:get-request-field,其中包含以下示例
考虑一个带有以下内容的form.xqy XQuery模块:
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<form name="test" action="upload.xqy?uid={xdmp:random()}" method="post"
enctype="multipart/form-data">
<p><label>File to upload:
<input type="file" class="name" name="upload" size="50"/></label></p>
<p><input type="submit" value="Upload and Get Results"/></p>
</form>
</body>
</html>
然后有一个upload.xqy XQuery模块,如下所示:
let $filename := xdmp:get-request-field-filename("upload")
let $disposition := fn:concat("attachment; filename=""",$filename,"""")
let $x := xdmp:add-response-header("Content-Disposition", $disposition)
let $x:= xdmp:set-response-content-type(
xdmp:get-request-field-content-type("upload"))
return
xdmp:get-request-field("upload")
执行form.xqy文件,选择一个文件,然后单击 “上传并获取结果”按钮。您上传的文件 将根据mime类型打开浏览器。如果你 想把它保存到数据库,你可以使用 xdmp:document-insert来做到这一点。
还有其他工作可以支持分段上传。
答案 1 :(得分:1)
let $uri := xdmp:get-request-field('uri', '')
let $filename := fn:tokenize($uri, "/")[fn:last()]
return
(
xdmp:add-response-header("Content-Disposition", fn:concat("attachment; filename=", $filename)),
fn:doc($uri)
)