How to download documents in Marklogic Server?
我想写一个 xquery 来下载
参见http://developer.marklogic.com/pubs/5.0/apidocs/AppServerBuiltins.html#xdmp:get-request-field,其中有以下示例
考虑一个具有以下内容的 form.xqy XQuery 模块:
1 2 3 4 5 6 7 8 9 10 | <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 模块如下:
1 2 3 4 5 6 7 | 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 这样做。
还有额外的工作来支持分段上传。
使用 xdmp:add-response-header。
1 2 3 4 5 6 7 | 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) ) |