如何使用XQuery和HTML上传文件到MarkLogic?
How to use XQuery and HTML to upload files to MarkLogic?
正如我的问题所述,我正在尝试使用 XQuery 和一个简单的 HTML 表单将文件上传到我的 MarkLogic 本地数据库。我已经连接到 HTTP 服务器。
我的代码现在看起来像这样:
表格:
<div id="content">
<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>
</div>
upload.xqy:
let $filename := xdmp:get-request-field-filename("upload")
let $collection := "semansysdocs"
let $fileLocation := xdmp:get-request-path()
return
xdmp:document-load($fileLocation,
map:map() => map:with("uri", $filename)
=> map:with("permissions", xdmp:default-permissions())
=> map:with("collections", $collection)
)
文档只是说明要使用 xdmp:document-insert(),但我不明白在哪里。
有没有一种方法可以指定文件的来源以获取 $fileLocation,或者我是否需要其他方法来执行此操作?
谢谢!
您的表单已在发送文件名和文件数据。 xdmp:get-request-field-filename('upload')
returns 浏览器发送的原始文件路径,xdmp:get-request-field('upload')
将为您获取数据。我认为您正在寻找类似的东西:
let $filename := xdmp:get-request-field-filename("upload")
let $file := xdmp:get-request-field("upload")
let $collection := "semansysdocs"
return
xdmp:document-insert(
$filename,
$file,
xdmp:default-permissions(),
(xdmp:default-collections(), $collection)
)
HTH!
正如我的问题所述,我正在尝试使用 XQuery 和一个简单的 HTML 表单将文件上传到我的 MarkLogic 本地数据库。我已经连接到 HTTP 服务器。
我的代码现在看起来像这样:
表格:
<div id="content">
<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>
</div>
upload.xqy:
let $filename := xdmp:get-request-field-filename("upload")
let $collection := "semansysdocs"
let $fileLocation := xdmp:get-request-path()
return
xdmp:document-load($fileLocation,
map:map() => map:with("uri", $filename)
=> map:with("permissions", xdmp:default-permissions())
=> map:with("collections", $collection)
)
文档只是说明要使用 xdmp:document-insert(),但我不明白在哪里。
有没有一种方法可以指定文件的来源以获取 $fileLocation,或者我是否需要其他方法来执行此操作?
谢谢!
您的表单已在发送文件名和文件数据。 xdmp:get-request-field-filename('upload')
returns 浏览器发送的原始文件路径,xdmp:get-request-field('upload')
将为您获取数据。我认为您正在寻找类似的东西:
let $filename := xdmp:get-request-field-filename("upload")
let $file := xdmp:get-request-field("upload")
let $collection := "semansysdocs"
return
xdmp:document-insert(
$filename,
$file,
xdmp:default-permissions(),
(xdmp:default-collections(), $collection)
)
HTH!