正如我的问题所述,我正在尝试使用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,还是需要其他方法来执行此操作?
谢谢!
答案 0 :(得分:1)
您的表单已经发送了文件名和文件数据。 xdmp:get-request-field-filename('upload')
返回浏览器发送的原始文件路径,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!