XQuery/上传文件
外观
< XQuery
您希望使用简单的 HTML 表单将文件上传到您的 eXist 数据库。
我们将使用 HTML <input> 元素在网页表单中,以及在 XQuery 中使用 store 函数。
我们将使用标准的 HTML 表单,但我们将添加一个 enctype="multipart/form-data" 属性。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>HTML Upload</title>
</head>
<body>
<form enctype="multipart/form-data" method="post" action="upload.xq">
<fieldset>
<legend>Upload Document:</legend>
<input type="file" name="file"/>
<input type="submit" value="Upload"/>
</fieldset>
</form>
</body>
</html>
在服务器端,我们将使用 request:get-uploaded-file-name() 获取传入文件的名称,并使用 request:get-uploaded-file-data() 函数获取文件数据。然后,我们可以使用 xmldb:store() 函数保存文件。
文件: upload.xq
let $collection := '/db/test/upload-test'
let $filename := request:get-uploaded-file-name('file')
(: make sure you use the right user permissions that has write access to this collection :)
let $login := xmldb:login($collection, 'admin', 'my-admin-password')
let $store := xmldb:store($collection, $filename, request:get-uploaded-file-data('file'))
return
<results>
<message>File {$filename} has been stored at collection={$collection}.</message>
</results>
此示例是由 Rémi Arnaud 于 2010 年 11 月 5 日在 eXist 开放邮件列表中发布的。