我想编写一个 xquery,它将下载并保存在 Marklogic Server 中的上传文档。我怎样才能做到这一点 ?
问问题
930 次
2 回答
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 来执行此操作。
还有额外的工作来支持分段上传。
于 2012-07-19T17:26:12.297 回答
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)
)
于 2012-07-19T17:24:51.047 回答